POJ2965(枚举+位运算)

来源:互联网 发布:淘宝桔子表行是正品吗 编辑:程序博客网 时间:2024/05/24 01:50

这题和1753几乎是一样的,只是稍微麻烦一点,只需要在深搜时,将改变的步数记录下来就OK了。

题目链接:http://poj.org/problem?id=2965

简单介绍

也是翻转的操作,只是是在每一个格子翻转后,引起同一行,同一列的格子发生变化。

问题是看是否能变为全1(假设-表示为1)

直接贴代码

/*  简单枚举  +记为0 ; -记为1 ;  open 65535*/#include<cstdio>#include<iostream>using namespace std ;int position[16], posi[16] ;int f[16] = {4383,8751,17487,34959,4593,8946,17652,35064,7953,12066,20292,36744,61713,61986,62532,63624} ;int min_times = 16, times = 0 ;int begin = 0 ;void DFS(int val,int dep){    if( val == 65535 )    {        if( min_times >= times )        {            for( int i = 0; i < 16; i++ )   position[i] = posi[i] ;    min_times = times ;  }    }    if( dep == 16 ) return ;    int temp = val ;    val = val ^ f[dep] ;    times++ ;     posi[dep] = 1 ;    DFS(val,dep+1) ;    times-- ;    posi[dep] = 0 ;    DFS(temp,dep+1) ;  }int main(){    char ch ;    for( int i = 0; i < 16; )    {cin.get(ch) ;if( ch == '-' ){    begin += (1<<i) ;     i++ ; } else if( ch == '+' ){      i++ ;        }    }    DFS(begin,0) ;    printf("%d\n",min_times) ;    for( int i = 0; i < 16; i++ )    {    if( position[i] == 1 )    printf("%d %d\n",(i/4)+1,(i%4)+1) ;     }    return 0 ;}

大家如果有不同的想法,欢迎一起谈论!

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕妇拉不出来是怎么办 孕妇严重便秘拉不出来怎么办 10小孩肛裂出血怎么办 水痘结痂蹭掉了怎么办 水痘留下的黑印怎么办 水痘痂掉了有坑怎么办 出水痘留下的疤怎么办 宝宝出水痘抓破怎么办 水痘结痂碰掉了怎么办 结痂掉了有坑怎么办 水痘留下的红印怎么办 点痣留下的凹坑怎么办 得水痘留下坑了怎么办 脚磨破了化脓了怎么办 水痘被扣的破了怎么办 水痘睡觉压破了怎么办 水痘破了化脓了怎么办 外阴长水痘破了怎么办 脸上的水痘破了怎么办 小孩出水痘破了怎么办 50多岁子宫肌瘤怎么办 一到晚上肛门痒怎么办 肛门和外阴很痒怎么办 脚磕到了肿了怎么办 脚碰到了肿了怎么办 腿被车子撞肿了怎么办 肛门长了小疙瘩怎么办 屁眼长了个包怎么办 屁股上长了个肉球怎么办 过敏了全身都痒怎么办 吃了螃蟹全身痒怎么办 全身痒眼睛肿了怎么办 感染了hpv病毒怎么办16 高危型hpv阳性52怎么办 腰椎盘突出腿疼怎么办 腰椎间盘突出压迫神经怎么办 疣体长到宫颈了怎么办 龟头的系带断了怎么办 龟头与系带断了怎么办 舌头下长肉芽痛怎么办 脑组织供血不足怎么办