https://vjudge.net/problem/OpenJ_Bailian-2811
熄灯问题是比较典型的算法题目(枚举),这里展示两种解法,供大家参考:
解发一:
#include <iostream>
#include<string>
#include<cstring>
#include<memory>
using namespace std;
char oriLights[5];
char lights[5];
char result[5];
int GetBit(char c,int i)
{
return (c>>i)&1;
}
void SetBit(char & c,int i,int v)
{
if(v){
c|=(1<<i);
}
else
c &= ~(1<<i);
}
void FlipBit(char & c,int i)
{
c ^= (1<<i);
}
void OutputResult(int t,char result[])
{
cout << "PUZZLE #" << t << endl;
for(int i=0;i<5;++i){
for(int j = 0;j<6;++j){
cout << GetBit(result[i],j);
if( j<5)
cout <<" ";
}
cout << endl;
}
}
int main()
{
int T;
cin >> T;
for(int t=1;t<

本文讨论了熄灯问题的进阶版本,指出每个初始状态至少有一种解,并鼓励思考如何找出所有可能的解。
最低0.47元/天 解锁文章
2884

被折叠的 条评论
为什么被折叠?



