現在3*3で作成してみました。
アルゴリズムは多重ループ探索を用いようと考えています。
しかし、左上が1の場合と中上が1の場合など二つの場合分けの
if文が同時動きません。
どうしたらよいのでしょうか?
よろしくお願いします。
#include<stdio.h>
int p[3][3];
int main(void){
int i,j;
for(j=0;j<3;j++){
for(i=0;i<3;i++){
p[j][i]=0;
}
}
//配列
// [0][0] [0][1] [0][2]
// [1][0] [1][1] [1][2]
// [2][0] [2][1] [2][2]
p[0][0]=1;
p[0][1]=1;
p[0][2]=1;
p[1][0]=1;
p[1][1]=1;
p[1][2]=1;
p[2][2]=1;
//上記初期値の結果
// 1 1 1
// 1 1 1
// 0 0 1
//上記初期値の出力
for(j=0;j<3;j++){
for(i=0;i<3;i++){
printf("%d ",p[j][i]);
}
printf("\n");
}
printf("\n\n");
//パターン1
for(j=0;j<3;j++){
for(i=0;i<3;i++){
//左上が1の場合
if(j==0 && i==0){
if(p[j][i]==1){
p[j][i]=0;
if(p[j+1][i]==0)p[j+1][i]=1;
else p[j+1][i]=0;
if(p[j+1][i+1]==0)p[j+1][i+1]=1;
else p[j+1][i+1]=0;
if(p[j+2][i]==0)p[j+2][i]=1;
else p[j][i]=0;
}
for(j=0;j<3;j++){
for(i=0;i<3;i++){
printf("%d ",p[j][i]);
}
printf("\n");
}
printf("\n\n");
}
//中上が1の場合
if(j==0 && i==1){
if(p[j][i]==1){
p[j][i]=0;
if(p[j+1][i-1]==0)p[j+1][i-1]=1;
else p[j+1][i-1]=0;
if(p[j+1][i]==0)p[j+1][i]=1;
else p[j+1][i]=0;
if(p[j+1][i+1]==0)p[j+1][i+1]=1;
else p[j+1][i+1]=0;
if(p[j+2][i]==0)p[j+2][i]=1;
else p[j+2][i]=0;
}
for(j=0;j<3;j++){
for(i=0;i<3;i++){
printf("%d ",p[j][i]);
}
printf("\n");
}
printf("\n\n");
}
//右上が1の場合
if(j==0 && i==2){
if(p[j][i]==1){
p[j][i]=0;
if(p[j+1][i-1]==0)p[j+1][i-1]=1;
else p[j+1][i-1]=0;
if(p[j+1][i]==0)p[j+1][i]=1;
else p[j+1][i]=0;
if(p[j+2][i]==0)p[j+2][i]=1;
else p[j+2][i]=0;
}
for(j=0;j<3;j++){
for(i=0;i<3;i++){
printf("%d ",p[j][i]);
}
printf("\n");
}
printf("\n\n");
}
}
}
for(j=0;j<3;j++){
for(i=0;i<3;i++){
printf("%d ",p[j][i]);
}
printf("\n");
}
return 0;
}