69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
int a[5],s1,s2,sum=0,p;
bool judge(char *str)
{
if(str[1]=='<'&&str[2]>='1'&&str[2]<='9')
{
if(a[str[0]-'A']<str[2]-'0')
return 1;
}
if(str[1]=='<'&&str[2]=='=')
{
if(a[str[0]-'A']<=str[3]-'0')
return 1;
}
if(str[1]=='=')
{
if(a[str[0]-'A']==str[2]-'0')
return 1;
}
if(str[1]=='>'&&str[2]=='=')
{
if(a[str[0]-'A']>=str[3]-'0')
return 1;
}
if(str[1]=='>'&&str[2]>='1'&&str[2]<='9')
{
if(a[str[0]-'A']>str[2]-'0')
return 1;
}
if(str[1]=='!'&&str[2]=='=')
{
if(a[str[0]-'A']!=str[3]-'0')
return 1;
}
return 0;
}
int main()
{
char ans[5][10],saying[5][10];
memset(ans,0,sizeof(ans));
memset(saying,0,sizeof(saying));
for(int i=0; i<5; i++)
gets(saying[i]);
for(a[0]=1; a[0]<=5; a[0]++)
{
for(a[1]=1; a[1]<=5; a[1]++)
{
if(a[1]==a[0])
continue;
for(a[2]=1; a[2]<=5; a[2]++)
{
if(a[2]==a[0]||a[2]==a[1])
continue;
for(a[3]=1; a[3]<=5; a[3]++)
{
if(a[3]==a[0]||a[3]==a[1]||a[3]==a[2])
continue;
for(a[4]=1; a[4]<=5; a[4]++)
{
if(a[4]==a[0]||a[4]==a[1]||a[4]==a[2]||a[4]==a[3])
continue;
s1=0,s2=0;
if(judge(saying[0]))
s2++;
else if(a[0]%2==1)
s1++;
if(judge(saying[1]))
s2++;
else if(a[1]%2==1)
s1++;
if(judge(saying[2]))
s2++;
else if(a[2]%2==1)
s1++;
if(judge(saying[3]))
s2++;
else if(a[3]%2==1)
s1++;
if(judge(saying[4]))
s2++;
else if(a[4]%2==1)
s1++;
if(s1==3&&s2==2)
{
for(p=0; p<5; p++)
if(a[p]==1)
ans[sum++][0]='A'+p;
for(p=0; p<5; p++)
if(a[p]==2)
ans[sum-1][1]='A'+p;
for(p=0; p<5; p++)
if(a[p]==3)
ans[sum-1][2]='A'+p;
for(p=0; p<5; p++)
if(a[p]==4)
ans[sum-1][3]='A'+p;
for(p=0; p<5; p++)
if(a[p]==5)
ans[sum-1][4]='A'+p;
}
}
}
}
}
}
char tmp[10];
for(int i=0; i<sum; i++)//字典序排列
for(int j=i+1; j<sum; j++)
{
if(strcmp(ans[i],ans[j])>0)
{
strcpy(tmp,ans[i]);
strcpy(ans[i],ans[j]);
strcpy(ans[j],tmp);
}
}
for(int i=0; i<sum; i++)
printf("%s\n",ans[i]);
printf("%d\n",sum);
return 0;
}
void dfs(int d)
{
if(d==5){
for(int i=0;i<5;i++){
int x =pos[i]&1,y=judge(i);//judge判断第i个人话为真或假, pos代表i的排名
if(x^y) return;
}
puts(a);
++cnt;
return;
}
for(int i=0;i<5;i++) if(!vis[i]){
vis[i]=1;
a[d] =i+'A';
pos[i] =d;
dfs(d+1);
vis[i] =0;
}
}