逻辑条件练习
闲来无事码码这个题,练习一下逻辑语句的写法,加油加油,周六蓝桥杯加油!

大概简述一下我的思路:
1.暴力出所有选项的组合
2.看某种组合是否满足所有的条件
ans:BCACACDABA
#include<iostream> #include<algorithm> #include<string.h> using namespace std; int main(){ char no[11],ans; int i; int c[4],t,count,t2; for(no[1]='A';no[1]<='D';no[1]++){ for(no[2]='A';no[2]<='D';no[2]++){ for(no[3]='A';no[3]<='D';no[3]++){ for(no[4]='A';no[4]<='D';no[4]++){ for(no[5]='A';no[5]<='D';no[5]++){ for(no[6]='A';no[6]<='D';no[6]++){ for(no[7]='A';no[7]<='D';no[7]++){ for(no[8]='A';no[8]<='D';no[8]++){ for(no[9]='A';no[9]<='D';no[9]++){ for(no[10]='A';no[10]<='D';no[10]++){ memset(c,0,sizeof(c)); //统计个数 for(i=1;i<=10;i++){ if(no[i]=='A')c[0]++; else if(no[i]=='B')c[1]++; else if(no[i]=='C')c[2]++; else c[3]++; } t=0; t2=0; for(i=1;i<4;i++){ if(c[i]>c[t])t=i; else t2=i; } ans=t2+'A'; count=0; //1 if(no[1]=='A'||no[1]=='B'||no[1]=='C'||no[1]=='D')count++; //2 if((no[2]=='A'&&no[5]=='C')|| (no[2]=='B'&&no[5]=='D')|| (no[2]=='C'&&no[5]=='A')|| (no[2]=='D'&&no[5]=='B'))count++; //3 if((no[3]=='A'&&no[3]!=no[6]&&no[3]!=no[2]&&no[3]!=no[4])|| (no[3]=='B'&&no[6]!=no[3]&&no[6]!=no[2]&&no[6]!=no[4])|| (no[3]=='C'&&no[2]!=no[6]&&no[2]!=no[3]&&no[2]!=no[4])|| (no[3]=='D'&&no[4]!=no[6]&&no[4]!=no[2]&&no[3]!=no[3]))count++; //4 if((no[4]=='A'&&no[1]==no[5]&&no[2]!=no[7]&&no[1]!=no[9]&&no[6]!=no[10])|| (no[4]=='B'&&no[1]!=no[5]&&no[2]==no[7]&&no[1]!=no[9]&&no[6]!=no[10])|| (no[4]=='C'&&no[1]!=no[5]&&no[2]!=no[7]&&no[1]==no[9]&&no[6]!=no[10])|| (no[4]=='D'&&no[1]!=no[5]&&no[2]!=no[7]&&no[1]!=no[9]&&no[6]==no[10]))count++; //5 if((no[5]=='A'&&no[5]==no[8])|| (no[5]=='B'&&no[5]==no[4])|| (no[5]=='C'&&no[5]==no[9])|| (no[5]=='D'&&no[5]==no[7]))count++; //6 if((no[6]=='A'&&no[8]==no[2]&&no[8]==no[4])|| (no[6]=='B'&&no[8]==no[1]&&no[8]==no[6])|| (no[6]=='C'&&no[8]==no[3]&&no[8]==no[10])|| (no[6]=='D'&&no[8]==no[5]&&no[8]==no[9]))count++; //7 if((no[7]=='A'&&ans=='C')|| (no[7]=='B'&&ans=='B')|| (no[7]=='C'&&ans=='A')|| (no[7]=='D'&&ans=='D'))count++; //8 if((no[8]=='A'&&abs(no[7]-no[1])!=1&&abs(no[5]-no[1])==1&&abs(no[2]-no[1])==1&&abs(no[10]-no[1])==1)|| (no[8]=='B'&&abs(no[7]-no[1])==1&&abs(no[5]-no[1])!=1&&abs(no[2]-no[1])==1&&abs(no[10]-no[1])==1)|| (no[8]=='C'&&abs(no[7]-no[1])==1&&abs(no[5]-no[1])==1&&abs(no[2]-no[1])!=1&&abs(no[10]-no[1])==1)|| (no[8]=='D'&&abs(no[7]-no[1])==1&&abs(no[5]-no[1])==1&&abs(no[2]-no[1])==1&&abs(no[10]-no[1])!=1))count++; //9 if((no[9]=='A'&&((no[1]==no[6]&&no[6]!=no[5])||(no[1]!=no[6]&&no[6]==no[5])))|| (no[9]=='B'&&((no[1]==no[6]&&no[10]!=no[5])||(no[1]!=no[6]&&no[10]==no[5])))|| (no[9]=='C'&&((no[1]==no[6]&&no[2]!=no[5])||(no[1]!=no[6]&&no[2]==no[5])))|| (no[9]=='D'&&((no[1]==no[6]&&no[9]!=no[5])||(no[1]!=no[6]&&no[9]==no[5]))))count++; //10 if((no[10]=='A'&&c[t]-c[t2]==3)|| (no[10]=='B'&&c[t]-c[t2]==2)|| (no[10]=='C'&&c[t]-c[t2]==4)|| (no[10]=='D'&&c[t]-c[t2]==1))count++; if(count==10){ for(i=1;i<=10;i++)cout<<no[i]; cout<<endl; } } } } } } } } } } } return 0; }
有几个类似的题:
https://www.dotcpp.com/oj/problem1534.html
https://www.dotcpp.com/oj/problem1498.html
stay hungry stay foolish

浙公网安备 33010602011771号