在下列的九宮格中,填入1~9,使得每個行與列,以及兩個主對角線的數字和都一樣。
一、逐步對k=1~9,每一步都列出來。
二、整理k=1~9為if elseif elseif else 的程式碼。
一、逐步對k=1~9,每一步都列出來。
CPP 程式碼:
檔名:NXN01.cpp
檔案內容:
#include <iostream>
#include <math.h>
#define N 3
using namespace std;
int main() {
int A[N][N]={0};
int i,j,Nexti,Nextj,k;
for (j=0;j<N;j++) {
for (i=0;i<N;i++){
cout << A[i][j] <<' ';
}
cout <<endl;
}
cout <<endl;
k=1;
i=0;
j=floor(N/2);
A[i][j]=k;
k=2;
i=i-1;
j=j-1;
if (i<0) {
i=N-1;
}
A[i][j]=k;
k=3;
i=i-1;
j=j-1;
if (j<0) {
j=N-1;
}
A[i][j]=k;
k=4;
i=i-1;
j=j-1;
if (A[i][j]!=0) {
i=i+2;
j=j+1;
}
A[i][j]=k;
k=5;
i=i-1;
j=j-1;
A[i][j]=k;
k=6;
i=i-1;
j=j-1;
A[i][j]=k;
k=7;
i=i-1;
j=j-1;
if (i<0 && j<0) {
i=i+2;
j=j+1;
}
A[i][j]=k;
k=8;
i=i-1;
j=j-1;
if (j<0) {
j=N-1;
}
A[i][j]=k;
k=9;
i=i-1;
j=j-1;
if (i<0) {
i=N-1;
}
A[i][j]=k;
for (j=0;j<N;j++) {
for (i=0;i<N;i++){
cout << A[i][j] <<' ';
}
cout <<endl;
}
}
執行結果:
二、整理k=1~9為if elseif elseif else 的程式碼。
CPP 程式碼:
檔名:NXN02.cpp
檔案內容:
#include <iostream>
#include <math.h>
#define N 3
using namespace std;
int main() {
int A[N][N]={0};
int i,j,Nexti,Nextj,k;
for (j=0;j<N;j++) {
for (i=0;i<N;i++){
cout << A[i][j] <<' ';
}
cout <<endl;
}
cout <<endl;
k=1;
i=0;
j=floor(N/2);
A[i][j]=k;
for (k=2;k<=N*N;k++) {
i=i-1;
j=j-1;
if (i<0 && j>=0) {
i=N-1;
} else if (j<0 && i>=0) {
j=N-1;
} else if (i<0 && j<0) {
i=i+2;
j=j+1;
} else if (A[i][j]!=0) {
i=i+2;
j=j+1;
}
A[i][j]=k;
}
for (j=0;j<N;j++) {
for (i=0;i<N;i++){
cout << A[i][j] <<' ';
}
cout <<endl;
}
}
執行結果:
沒有留言:
張貼留言