#include<iostream>#include<cstring>usingnamespace std;char g[4][4];voidt(int x,int y){for(int i =0; i <4; i++){if(g[x][i]=='+') g[x][i]='-';else g[x][i]='+';if(g[i][y]=='+'&& i != x) g[i][y]='-';elseif(g[i][y]=='-'&& i != x) g[i][y]='+';}}voidf(){int ans =1e9;int c[5][5];//枚举16个把手是否操作for(int k =0; k <1<<16; k++){int res =0;int st[5][5]={0};char b[4][4];memcpy(b, g,sizeof(g));for(int i =0;i<4; i++){for(int j =0; j <4; j++){if(k >>(4* i + j)&1){t(i, j);
res++;
st[i +1][j +1]++;}}}int flag =1;for(int i =0; i <4; i++){for(int j =0; j <4; j++){if(g[i][j]=='+'){
flag =0;break;}}}if(flag){if(ans > res){
ans = res;memcpy(c, st,sizeof(st));}}memcpy(g, b,sizeof(b));}
cout<<ans<<endl;for(int i =1; i <=4; i++){for(int j =1; j <=4; j++){if(c[i][j]) cout<<i<<" "<<j<<endl;}}}intmain(){for(int i =0; i <4; i++) cin>>g[i];f();return0;}
占卜DIY
#include<iostream>#include<vector>usingnamespace std;
vector<int> a[14];//存储每堆牌int b[14];//存储每张牌正面朝上的数量int res;intmain(){char c;int x;for(int i =1; i <=13; i++){for(int j =1; j <=4; j++){
cin>>c;if(c >='2'&& c <='9') x = c -'0';elseif(c =='0') x =10;elseif(c =='A') x =1;elseif(c =='J') x =11;elseif(c =='Q') x =12;else x =13;
a[i].push_back(x);}}//4条命for(int i =0; i <4; i++){//操作1int t = a[13][i];//当t不等于K时while(t !=13){
b[t]++;int u = t;//存储每堆最后一张
t = a[u].back();//弹出每堆最后一张
a[u].pop_back();}}for(int i =1; i <=13; i++) res += b[i]==4;
cout<<res;return0;}