巴里nbsw 2022-04-28 16:45
浏览 59
已结题

求了,为什么这个n永远大于63啊!

#include
#include
#include
#include
using namespace std;
int oriLights[5];//={1,1,1,1,1};
int lights[5];
int endLights[5];
int b;
int getBit(int a,int j){
return (a>>j)&1;
}
void setBit(int &a,int j,int n){
if(n){
a |=(1<<j);
}else{
a &=~(1<<j);
}
}
void flipBit(int &a,int j){
a ^=(1<<j);
}
void outputResult(int a[],int t){
cout<<t<<endl;
for(int i=0;i<5;i++){
for(int j=0;j<6;j++){
cout<<getBit(a[i],j)<<" ";
}
cout<<endl;
}
}
int main(){
int t;
cin>>t;
for(int i=0;i<t;i++){
for(int i=0;i<5;i++){
for(int j=0;j<6;j++){
int n;
cin>>n;
setBit(oriLights[i],j,n);
}
}
}

int n;
int s;
for(int n=0;n<=64;n++){
    s=n;
    memcpy(lights,oriLights,sizeof(oriLights));
    for(int a=0;a<5;a++){
        lights[a]=oriLights[a];
    }
    
    for( b=0;b<5;b++){
        endLights[b]=s;
        for(int j=0;j<6;j++){
            if(getBit(s,j)=='1'){
                flipBit(lights[b],j);
                if(j>0){
                flipBit(lights[b],j-1);}
                if(j<5){
                flipBit(lights[b],j+1);}
                
                if(b<5){
                    flipBit(lights[b+1],j);
                }
            }
            s=lights[b];
        }
        }
        if(endLights[4]==0){
            outputResult(endLights,t);
            break;
    }
    if(n>63){
        cout<<"dwjal";
    }
}

return 0;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月6日
    • 创建了问题 4月28日

    悬赏问题

    • ¥15 51嵌入式入门按键小项目
    • ¥30 海外项目,如何降低Google Map接口费用?
    • ¥15 fluentmeshing
    • ¥15 手机/平板的浏览器里如何实现类似荧光笔的效果
    • ¥15 盘古气象大模型调用(python)
    • ¥15 传人记程序做的plc 485从机程序该如何写
    • ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?
    • ¥50 libwebsockets 如何添加其他socket事件回调
    • ¥50 实现画布拖拽算子排布,通过flink实现算子编排计算,请提供思路
    • ¥15 esium自定义材质拉伸问题