第一天 POJ 1753
2016-03-19 17:40
225 查看
//1753
#include <iostream>
#define MAX 999999
using namespace std;
char s[4][4];
int cs[16] = {0x13,0x27,78,140,305,626,1252,2248,4880,8992,20032,35968,12544,29184,58368,51200};
int po[16] = {1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};
int main()
{
int i,j,value = 0;
int cmin = MAX;
char c;
for(i = 0;i< 16;i++)
{
cin >> c;
if(c == 'b')
value += (int)po[i];
else continue;
}
for(i = 0;i< 65536;i++)
{
int cou = 0;
int cvalue = value;
for(j = 0;j < 16;j++)
if(i & (int)po[j])
{
cou++;
cvalue ^= cs[j];
}
if(cvalue == 0 || cvalue == 65535)
if(cou < cmin) cmin = cou;
}
if(cmin == MAX) cout << "Impossible";
else cout<< cmin<< endl;
return 0;
}
想到了用位运算判断状态,但脑抽的非要转化成二进制(傻的极致是什么)对于枚举还是理解不到位
#include <iostream>
#define MAX 999999
using namespace std;
char s[4][4];
int cs[16] = {0x13,0x27,78,140,305,626,1252,2248,4880,8992,20032,35968,12544,29184,58368,51200};
int po[16] = {1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};
int main()
{
int i,j,value = 0;
int cmin = MAX;
char c;
for(i = 0;i< 16;i++)
{
cin >> c;
if(c == 'b')
value += (int)po[i];
else continue;
}
for(i = 0;i< 65536;i++)
{
int cou = 0;
int cvalue = value;
for(j = 0;j < 16;j++)
if(i & (int)po[j])
{
cou++;
cvalue ^= cs[j];
}
if(cvalue == 0 || cvalue == 65535)
if(cou < cmin) cmin = cou;
}
if(cmin == MAX) cout << "Impossible";
else cout<< cmin<< endl;
return 0;
}
想到了用位运算判断状态,但脑抽的非要转化成二进制(傻的极致是什么)对于枚举还是理解不到位
相关文章推荐
- 处理某个json文件的代码
- 第4周-项目3-(1)猜数字游戏
- 算复利条件下等额还款金额
- 求一个整数的平方和立方
- ios测试简介
- 详解Unity 4.6新UI的布局
- 英语歌曲:Cry on My Shoulder(在我肩上哭泣)
- C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
- 内存管理范围和@property
- 对代码的分析
- 逆光
- solr5.3+tomcat-7.0.65+IKAnalyzer分词
- 英语歌曲:Can't Stop Love
- 英语歌曲:HOTEL CALIFORNIA 加州旅馆
- JSON数据查询方法
- Visual Studio安装及单元测试
- 进度表博客二
- [Java语言] Sort Colors 颜色排序
- 网易2016研发工程师编程题 扫描透镜
- 英语歌曲:I Love You -Stewart Mac