標籤

BAT (38) shell (34) Virtual Machine (33) Xubuntu (29) acfs (25) PHP (24) CentOS (21) Virtul Box (20) 編輯器 (17) 資料庫 (15) lubuntu (13) windows (13) CPP (12) ubuntu (12) chrome (11) laravel (10) Docker (9) Python (9) 5A88 (7) VMware (6) 資料結構 (6) Javascript (5) Node (5) Proxmox VE (5) 公告系統 (5) 程式積木 (5) Android Studio (4) ANN (3) OB2D2016x64 (3) Xoops (3) clonezilla (3) samba (3) 公文 (3) 其他 (3) 硬體 (3) API (2) Android (2) AppInvent2 (2) Html (2) Hyper-V (2) Nas (2) botnet (2) mbot (2) swift (2) wordpress (2) 樣板 (2) 防火牆 (2) AD的應用 (1) Ansible (1) Arduino (1) CSS (1) GitLab (1) HA Proxy (1) LegoEV3 (1) PowerShell (1) Scratch (1) VM (1) XenServer (1) kotlin (1) linuxmint (1) lxc (1)

2020年8月16日 星期日

C++程式,九宮格問題 或是 三階魔方陣

在下列的九宮格中,填入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;
}
}
 執行結果:


沒有留言:

張貼留言

在 Windows 10 x64 1909版,使用BAT快速安裝公文系統與人事服務網(自然人憑證)版

相關內容移往 https://skjhcreator.blogspot.com/2021/02/windows-10-x64-1909bat.html