⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1222.cpp

📁 北大在线做题系统1222 模拟题 源自点灯游戏
💻 CPP
字号:
#include <stdio.h>
#include <memory.h>

int grid[6][7];
int op[6][7];
int a[6][7];
int out[6][7];

void next()
{
     int j;
     for(j=5;j>=0;j--)
     {
       if(j==5) op[0][j]++;
        else          
        if(op[0][j+1]==2)    {op[0][j+1]=0;op[0][j]++;} 
     }
}


void copy(int cp)
{
     int i,j;
     for(i=0;i<5;i++)
      for(j=0;j<6;j++)
      {
        if(cp==0) a[i][j]=grid[i][j];
        else  out[i][j]=op[i][j];
      }      
}

void change(int i,int j)
{
     a[i][j]^=1;
     if(j>0) a[i][j-1]^=1;
     if(j<5)  a[i][j+1]^=1;
     if(i>0)  a[i-1][j]^=1;
     if(i<4)  a[i+1][j]^=1;
}

int main()
{
    int t,p,i,j,flag;
    scanf("%d",&t);
    for(p=1;p<=t;p++)
    {
      for(i=0;i<5;i++)
       for(j=0;j<6;j++)
       scanf("%d",&grid[i][j]);
       
       memset(op,0,sizeof(op));
       
       while(op[0][0]!=2)
       {
               copy(0);
               flag=0;
               for(i=0;i<=5;i++)
               {
                 if(i!=0&&i!=5)
                 {
                   for(j=0;j<6;j++)
                   {
                   if(a[i-1][j]==1) 
                   {
                    op[i][j]=1;
                    change(i,j);
                   }
                   else op[i][j]=0;
                   }         
                 }
                 
                 else
                 {
                     if(i==0)
                     {
                       for(j=0;j<6;j++)
                       {
                         if(op[i][j]==1) change(i,j);
                       }
                     }
                     else if(i==5)
                     {
                       for(j=0;j<6&&a[i-1][j]==0;j++);
                       if(j==6) {flag=1; copy(1);}
                     }            
                 }
                  
               }
               if(flag==1) break;
               else next();
         }
         
          printf("PUZZLE #%d\n",p);

              for(i=0;i<5;i++) 
                       {      
                           for(j=0;j<6;j++) 
                          { 
                            if(j)    printf(" %d",out[i][j]); 
                            else        printf("%d",out[i][j]); 
                         } 
                            printf("\n"); 
                   } 
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -