poj2965 The Pilots Brothers' refrigerator

无脑枚举题。。。

#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;
}
View Code

 

posted @ 2018-12-19 12:14  lqsno1  阅读(89)  评论(0编辑  收藏  举报