算法基础_熄灯问题
2017-12-09 20:46
190 查看
提示:
用二进制数进行枚举:讲一个int类型的数从0循环到2^k-1,k是所需用到的比特个数(见eg.2);用特定字符串等的首字母加switch_case判断输入(见eg.1);
eg.1
#include<iostream>
#include<cstring>
using namespace std;
char Left[3][7];
char Right[3][7];
char result[3][7];
bool IsFake(char c,bool light);
int main()
{
int t;
cin>>t;
while(t--){
for(int i = 0;i<3;++i) cin>>Left[i]>>Right[i]>>result[i];
for(char c='A';c<='L';c++){
if(IsFake(c,true)){
cout<< c <<" is the couterfeit coin and it is light."<<endl;
break;
}
else if(IsFake(c,false)){
cout<<c<<" is the counterfeiter coin and it is heacy."<<endl;
break;
}
}
}
return 0;
}
bool IsFake(char c,bool light)
{
for(int i=0;i<3;i++){
char *pLeft,*pRight;
if(light){
pLeft = Left[i];
pRight = Right[i];
}
else{
pLeft = Right[i];
pRight = Left[i];
}
switch(result[i][0]){
case 'u':
if(strchr(pRight,c)==NULL)
return false;
break;
case 'e':
if(strchr(pLeft,c) || strchr(pRight,c))
return false;
break;
case 'd':
if(strchr(pLeft,c)==NULL)
return false;
break;
}
}
return true;
}
eg.2
#include <memory>
#include <string>
#include <cstring>
#include <iostream>
using namespace std;
char oriLights[5];
char lights[5];
cahr result[5]
char switchs;
int GetBit(char c,int i){
//取c的第i位
return (c>>i)&1;
}
void SetBit(char & c,int i,int v){
//设置c的第i位为v
if(v)
c |= (1<<i);
else
c &= ~(1<<i);
}
void Flip(char & c,int i){
//将c的第i位取反
c ^= (1<<i);
}
for(int n=0;n<64;++n){
switchs = n;
for(int i=0;i < 5;++i){
result = switchs;
for(int j=0;j < 6;++j){
if(GetBit(swichs,j)){
if(j>o)
Flip(lights[i],j-1);
Flip(lights[i],j);
if(j<5)
Flip(lights[i],j+1);
}
}
if(i<4)
lights[i+1] ^= switchs;
switchs = lights[i]; } if(lights[4] == 0){ OutputResult(result); break; } }
相关文章推荐
- 枚举-熄灯问题(算法基础 第2周)
- 算法基础之python实现枚举法中的熄灯问题
- 算法基础:田忌赛马问题(Golang实现)
- C++基础算法学习——汉洛塔问题
- 算法基础-枚举-编程题#1: 画家问题
- 枚举-拨钟问题(算法基础 第2周)
- 【基础算法】铲雪车问题(BZOJ1190)
- 用栈代替递归-汉诺塔问题(算法基础 第3周)
- 基础算法一一股神问题
- JAVA代码—算法基础:四平方定理问题
- 算法基础:递归---汉诺塔问题
- POJ 算法基础 Assignment: 编程作业—枚举 编程题#1: 画家问题
- 算法基础:整数拆分问题(Golang实现)
- 算法基础之python实现递归法中棋盘分割问题
- 算法基础:整数拆分问题(Golang实现)
- 广度优先搜索-迷宫问题(算法基础 第8周)
- 【算法设计与分析基础】8、穷举 旅行商问题
- 算法基础:周期串问题
- 算法实例一 算法问题求解基础--欧几里得递归算法和递归算法
- 深度优先搜索1-城堡问题(算法基础 第6周)