无脑枚举题。。。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<iostream> using namespace std; int t[5]; int get_(int x){ int r=0; while(x>0){ if(x&1)++r; x>>=1; } return r; } void pr(int x){ for(int i=0;i<4;++i){ if(x&1)cout<<1<<" "; else cout<<0<<" "; x>>=1; } cout<<endl; } int main(){ for(int i=0;i<4;++i){ for(int j=0;j<4;++j){ char c; cin>>c; if(c=='+')t[i]+=(1<<j); } } int ans=9999999,a1,a2,a3,a4; for(int i=0;i<(1<<4);++i){ for(int j=0;j<(1<<4);++j){ for(int k=0;k<(1<<4);++k){ for(int z=0;z<(1<<4);++z){ int kk[5]; memcpy(kk,t,sizeof(kk)); for(int p=0;p<4;++p){ if((1<<p)&i){ kk[0]^=((1<<4)-1); for(int l=0;l<4;++l){ if(l!=0){ kk[l]^=(1<<p); } } } if((1<<p)&j){ kk[1]^=((1<<4)-1); for(int l=0;l<4;++l){ if(l!=1){ kk[l]^=(1<<p); } } } if((1<<p)&k){ kk[2]^=((1<<4)-1); for(int l=0;l<4;++l){ if(l!=2){ kk[l]^=(1<<p); } } } if((1<<p)&z){ kk[3]^=((1<<4)-1); for(int l=0;l<4;++l){ if(l!=3){ kk[l]^=(1<<p); } } } } if(kk[0]==0&&kk[1]==0&&kk[2]==0&&kk[3]==0){ if(ans>get_(i)+get_(j)+get_(k)+get_(z)){ ans=get_(i)+get_(j)+get_(k)+get_(z); a1=i;a2=j;a3=k;a4=z; } } } } } } int l=0; while(a1>0){ ++l; if(a1&1)cout<<1<<" "<<l<<endl; a1>>=1; } l=0; while(a2>0){ ++l; if(a2&1)cout<<2<<" "<<l<<endl; a2>>=1; } l=0; while(a3>0){ ++l; if(a3&1)cout<<3<<" "<<l<<endl; a3>>=1; } l=0; while(a4>0){ ++l; if(a4&1)cout<<4<<" "<<l<<endl; a4>>=1; } printf("%d",ans); return 0; }