偶是新会员,多多关照
点灯游戏大家都知道的吧
我的程序实现把5*5=25盏灯点亮,大家帮忙改一下,怎么样输入任意数N,实现N*N盏灯的算法
我的程序如下
//file name:diandeng.cpp
//该程序实现点灯游戏的结果;
#include <iostream>
#include <cmath>
using namespace std;
void chang(int[][5]);
void prin(int[][5]);
void main()
{int a[5][5] = {
 {0,0,0,0,0},
 {0,0,0,0,0},
 {0,0,0,0,0},
 {0,0,0,0,0},
 {0,0,0,0,0}
 };
cout<<"Before chenged\n";
prin(a);//打印输出a的原始状态;
cout<<"The order is:"<<endl;
chang(a);
cout<<"\nAfter changed:\n";
prin(a);//打印输出a的末状态;  
}
//*************************    chang函数    ***************
void chang(int a[][5])
{
int m=0;
int x=0;
do{m+=1;
 
  for(int i=0;i<=4;i++) 
  {for(int j=0;j<=4;j++)
 {if(a[i][j]==0)
  {m-=1;
  if(!(x%5))
  cout<<'\n';
  cout<<i+1<<','<<j+1<<'\t';
  a[i][j]=1;//若当前值为0,则改变它;
     if((i-1)>=0)//若第i-1列有元素,则执行if语句,否则跳过;
  {if(a[i-1][j]==1)
  a[i-1][j]=0;
  else 
  a[i-1][j]=1;
  }
        if(i+1<=4)//若第i+1列有元素,则执行if语句,否则跳过;
  {
        if(a[i+1][j]==1) a[i+1][j]=0;
        else a[i+1][j]=1;}
        if((j-1)>=0)//若第j-1行有元素,则执行if语句,否则跳过;
  {if(a[i][j-1]==1)
  a[i][j-1]=0;
     else
     a[i][j-1]=1;
  }
        if((j+1)<=4)//若第j+1行有元素,则执行if语句,否则跳过;
  {if(a[i][j+1]==1)
     a[i][j+1]=0;
        else
     a[i][j+1]=1;}
   
  x+=1;}
 }
  }
}while(m!=0);
}
//****************  prin函数  ****************************
void prin(int a[][5])
{
cout<<"a[5][5]=:"<<"\n{\n";
for (int m=0;m<=4;m++)
 {
 for(int n=0;n<=4;n++)
 cout<<a[m][n]<<',';
 cout<<'\n';}
cout<<'}'<<endl;
}



											
	    

	
