睡觉前请关灯的 破解尝试版本 由已知解求一个矩阵的步骤

#include<iostream>
#include"wz.h"
#include<ctime>
using namespace std;
#define  MAX  5
void show(int arr[][MAX])
{
 for(int i=0;i<MAX;i++)
 {
  for(int j=0;j<MAX;j++)
  {
   cout<<arr[i][j]<< " ";
  }
  cout<<endl;
 }
 cout<<endl;
}

void Change(int arr[][MAX],int x,int y)
{
 if(x < 0 || y < 0 || x >= MAX || y >= MAX)
 {
  return ;
 }
 arr[x][y] = 1 -arr[x][y];
 if(x-1 >= 0)
 {
  arr[x-1][y] = 1 - arr[x-1][y];
 }
 if(x+1 <= MAX)
 {
  arr[x+1][y] = 1 - arr[x+1][y];
 }
 if(y-1 >= 0)
 {
  arr[x][y-1] = 1 - arr[x][y-1];
 }
 if(y+1 <= MAX)
 {
  arr[x][y+1] = 1 - arr[x][y+1];
 }
}

int man()
{
 int arr[MAX][MAX] = {0};
 int x;
 int y;
        int k=0;
time_t t;
 srand((unsigned)time(&t));
k=rand()%5;
      
while(k--)
{   
    x=rand()%5;
    y=rand()%5;
   cout<<k<<x<<y<<endl;
  arr[x][y]=1;
}
 show(arr);
 cout<<"熄灯前睡觉 输入坐标(x,y)"<<endl;
 
 while( 1 )
 {
  cin>>x>>y;
                x=x-1;y=y-1;
  Change(arr,x,y);
  show(arr);
 }
}

int main()
{
int x= (int )time(NULL)%10;
cout<<x<<endl;
return 0;
}
#include"wz.h"
#include"sts.h"
#define  MAX  5
void show(int arr[][MAX])
{
 for(int i=0;i<MAX;i++)
 {
  for(int j=0;j<MAX;j++)
  {
   cout<<arr[i][j]<< " ";
  }
  cout<<endl;
 }
 cout<<endl;
}

void play(int arr[][MAX],int x,int y)
{
 if(x < 0 || y < 0 || x >= MAX || y >= MAX)
 {
  return ;
 }
 arr[x][y] = 1 -arr[x][y];
 if(x-1 >= 0)
 {
  arr[x-1][y] = 1 - arr[x-1][y];
 }
 if(x+1 < MAX)
 {
  arr[x+1][y] = 1 - arr[x+1][y];
 }
 if(y-1 >= 0)
 {
  arr[x][y-1] = 1 - arr[x][y-1];
 }
 if(y+1 < MAX)
 {
  arr[x][y+1] = 1 - arr[x][y+1];
 }
}

void k1(int v[][MAX])
{
 play(v,4,4); show(v);  play(v,4,0); show(v);
 play(v,2,4); show(v);  play(v,2,0); show(v);
 play(v,1,4); show(v);  play(v,1,0); show(v);
 play(v,1,3); show(v);  play(v,1,1); show(v);
 play(v,0,0); show(v);  play(v,0,4); show(v);
}
void k2(int v[][MAX])
{
play(v,4,4); show(v);   play(v,4,1); show(v);
 play(v,4,0); show(v);   play(v,3,4); show(v);
   play(v,3,0); show(v);   play(v,2,4);  show(v);
  
  play(v,2,2); show(v);
 
 play(v,2,1); show(v);  play(v,3,2); show(v);
  play(v,4,4); show(v);  play(v,1,2); show(v);
 play(v,0,3); show(v);  play(v,0,4); show(v);
}
void k3(int v[][MAX])
{
play(v,4,1); show(v);   play(v,3,4); show(v);
 play(v,3,3); show(v);   play(v,3,1); show(v);
   play(v,3,0); show(v);   play(v,2,1);  show(v);
  play(v,2,0); show(v); play(v,1,4); show(v); 
  play(v,1,3); show(v); play(v,1,2); show(v); 
 
 play(v,2,0); show(v);  play(v,0,3); show(v);
}
void k4(int v[][MAX])
{
play(v,4,3); show(v);   play(v,4,1); show(v);
 play(v,3,2); show(v);   play(v,3,1); show(v);
   play(v,2,4); show(v);   play(v,2,3);  show(v);
  play(v,2,1); show(v); play(v,2,0); show(v); 
  play(v,1,4); show(v); play(v,1,1); show(v); 
 
 play(v,0,2); show(v);  play(v,0,3); show(v);
 play(v,2,3); show(v);  play(v,3,3); show(v);
 play(v,4,3); show(v);  play(v,4,2); show(v);
}
void k5(int v[][MAX])
{
play(v,3,4); show(v);   play(v,3,2); show(v);
play(v,3,1); show(v);   play(v,3,0); show(v);
play(v,2,4); show(v);   play(v,2,2);  show(v);
play(v,2,1); show(v); play(v,1,4); show(v); 
play(v,1,3); show(v); play(v,1,2); show(v);
play(v,1,1); show(v); play(v,1,0); show(v);  
 
 play(v,4,0); show(v);  play(v,3,1); show(v);
 play(v,2,1); show(v);  play(v,0,1); show(v);
 play(v,0,4); show(v);  play(v,2,3); show(v);
 play(v,4,3); show(v);
 
}
void cp(int v[][MAX])
{    int i,j;int k=0;
   for(i=0;i<MAX-1;i++)
  {
     for(j=0;j<MAX;j++)
    {
      if(v[i][j]==1) play(v,i+1,j);
    }
  }
    show(v);
  i=MAX-1;
  for(j=0;j<MAX;j++)
    {
      if(v[i][j]==1)  k++;
    }
 
    if(k>0)
      {
         if((v[i][0]==v[i][4])&&(v[i][4]==1))k2(v);
         if((v[i][2]==v[i][3])&&(v[i][3]==v[i][4]))k3(v);
         if((v[i][0]==v[i][1])&&(v[i][1]==v[i][2]))k4(v);
         if((v[i][1]==v[i][3])&&(v[i][3]==1))k5(v);         
       }
    else cout<<"over"<<endl;   
}
void cp2()
{
int  v[MAX][MAX] = {0};
     int i,j;
 int x;
 int y;
        int k=0;
         
      v[4][0]=1;
      v[4][4]=1;
      show(v);
      k2(v);
  
}
void cp3()
{
int  v[MAX][MAX] = {0};
  
      v[4][2]=1;
      v[4][3]=1;
      v[4][4]=1;
      show(v);
      k3(v);
  
}
void cp4()
{
int  v[MAX][MAX] = {0};
     int i,j;
 int x;
 int y;
        int k=0;
         
      v[4][0]=1;
      v[4][1]=1;
      v[4][2]=1;
      show(v);
      k4(v);
  
}
void cp5()
{
int  v[MAX][MAX] = {0};
     int i,j;
 int x;
 int y;
        int k=0;
         
      v[4][1]=1;
 
      v[4][3]=1;
      show(v);
      k5(v);
  
}
int player()
{
 int v[MAX][MAX] = {0};
 int x;
 int y;
        int k=3;
        int state=1;
      /*   time_t t;
 srand((unsigned)time(&t));
k=rand()%5+1;
    
while(k--)
{   
    x=rand()%5;
    y=rand()%5;   
    v[x][y]=1;
}*/
v[4][2]=1;v[4][3]=1;v[4][4]=1;
 show(v);
 
 while( state)
 {      
                 //cout<<"输入0由电脑解答,1则继续"<<endl;
               scanf("%d",&state);
              if(state==1)cp(v);
               //  cout<<"熄灯前睡觉 输入坐标(x,y)"<<endl;
  //cin>>x>>y;   x=x-1;y=y-1;
  //play(v,x,y);  show(v);
               
 }
}
int main()
{
cout<<"          欢迎参与点灯游戏     "<<endl<<"              由wzzx提供"<<endl;
cout<<"   游戏过程中可以选择电脑演示求解步骤  "<<endl;
cout<<"***************************************"<<endl;
  player();
 return 0;
}

用了 测试的步骤模仿了玩法

当然 同一天已发现一个统一的秘密   可以在不用数学分析的方式来解决这个问题

时间: 2024-10-20 12:28:08

睡觉前请关灯的 破解尝试版本 由已知解求一个矩阵的步骤的相关文章

c 睡觉前请关灯 的第一次尝试

#include"wz.h" /*int check3(int x[][5]) {  int i,j;  int sum=0; for(i=0;i<5;i++)  { for(j=0;j<5;j++)   sum+=x[i][j];  } if(sum==1) return 1; else return 0; }*/ int check3(int x[][5]) {  int i,j;    for(i=0;i<5;i++)  { for(j=0;j<5;j++

睡觉前 请关灯的 记录版本

#include"wz.h" #include"sts.h" #define  MAX  5 void show(int arr[][MAX]) {  for(int i=0;i<MAX;i++)  {   for(int j=0;j<MAX;j++)   {    cout<<arr[i][j]<< " ";   }   cout<<endl;  }  cout<<endl; } vo

睡觉前请关灯 第二次整理

#include"wz.h" #include"sts.h" #define  MAX  5 void show(int arr[][MAX]) {  for(int i=0;i<MAX;i++)  {   for(int j=0;j<MAX;j++)   {    cout<<arr[i][j]<< " ";   }   cout<<endl;  }  cout<<endl; } vo

高效人士睡觉前做的10件事

本文翻译自网站lifehack,原文链接http://www.lifehack.org/articles/productivity/10-things-productive-people-before-bed.html,作者为LUIGI POTENZA,译者为foruok 大部分高效能人士在日常生活中都有一些能帮助他们成功的习惯.他们明白,事业成功的关键在于自己的心理和身体健康,而这又取决于他们的睡前习惯. 这10件事,帮助那些成功人士成为社会上最能赚钱的那20%. 1.他们回顾自己的一天 史蒂

睡觉请关灯

 解答之终极版   睡觉请关灯 2016-04-01 18:18:12 标签:游戏 添加标签>> 首先,关于这个的基本讨论已过一阶段了.现在就是合成版  以后做mcf java等的界面. 留了 一个bug就是 电脑解决完后 会多打印几个矩阵. 改进的地方,1:增加了一种电脑解法,         2:记录用了自增栈.          #include"c.h" #include"c++.h" #define  MAX  5 #define N   10

安装lnmp前请先运行screen

安装lnmp前请先运行screen 虽然之前vps侦探已经发表过screen命令的使用方法,并结合lnmp一键安装包进行了简单的说明,但是还是有些小白会问当通过putty或者SecureCRT安装lnmp时,网络突然掉线或者不小心putty被关掉等等原因,造成lnmp安装过程被中断怎么办,其实防止这种现象很简单,只要在安装lnmp前执行screen命令就可以了. licess也在vps侦探上说过screen命令的使用方法,下面结合lnmp的安装过程再说一下. 1.screen安装方法就不说了,看

如何解决更新被拒绝,因为远程版本库包含您本地尚不存在的提交。这通常是因为另外 提示:一个版本库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更 提示:(如 &#39;git pull ...&#39;)。

不要通过网页提交,通过网页提交一次,然后在终端再次push的时候,会认为网上代码仓库已经被其他地方提交过一次代码,此时会拒绝终端push 这个时候只能是pull,然后才能再次在终端提交. 也就是说,避免这种问题的注意事项是:不要通过网页向仓库提交文件. 解决办法: 1.强行上传  git push -u origin +master 2. 尽量先同步github上的代码到本地,在上面更改之后再上传 如何解决更新被拒绝,因为远程版本库包含您本地尚不存在的提交.这通常是因为另外 提示:一个版本库已向

VS2017新建或拷贝项目编译时出现:找不到 Windows SDK 版本8.1.请安装所需的版本的 Windows SDK

VS2017新建或拷贝项目编译时出现:找不到 Windows SDK 版本8.1.请安装所需的版本的 Windows SDK 或者在项目属性页的问题解决方案 解决方法: 右击项目解决方案, 选择:重定解决方案目标. 提示框中,选择SDK版本后点击确定. 原文地址:https://www.cnblogs.com/ming-4/p/11736187.html

2016/07/07 apmserv5.2.6 Apache启动失败,请检查相关配置。MySQL5.1已启动。

因为要用PHP做一个程序,在本机上配PHP环境,下了个APMServ5.26,安装很简单,不再多说,装好后,启动,提示错误,具体是:“Apache启动失败,请检查相关配置.√MySQL5.1已启动”,然后就在网上找解决办法,倒是找到不少,但都没有解决问题,差点就想换一个集成环境了.不过知难而进一向是我的原则,最后终于解决了,现在把所有解决步骤整理出来,希望能对碰到同样情况的朋友有所帮助,如果有有朋友碰到新的情况,欢迎同我交流.另外如果大家有自已各方面经验,欢迎在阳关道网站上发布出来跟大家共享一下