日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java 二维数组奇数金字塔_二维数组:奇数阶魔方 | 新思维:C语言程序设计

發布時間:2023/12/1 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 二维数组奇数金字塔_二维数组:奇数阶魔方 | 新思维:C语言程序设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

幻方,有時又稱魔方,由一組排放在正方形中的整數組成,其每行、每列以及兩條對角線上的數之和均相等。通常幻方由從到的連續整數組成。

Siamese方法(Kraitchik 1942年,pp. 148-149)是構造奇數階幻方的一種方法,說明如下:

1)把1放置在第一行的中間

2)從2開始直到n×n的各數依次放在右上方格中

3)當右上方格出界的時候,則由另一邊則回繞。例如1在第1行,則2應放在最下一行,列數同樣加1

4)如果按上面規則確定的位置上已有數,或上一個數位于最右上方時,則把下一個數放在上一個數的下面 按照以上步驟直到填寫完所有方格。

輸入: 自然數n(1<=n<=20,n是奇數)

輸出: n行,每行n個數,每個數占4個字符位置。 提示:使用 printf("%4d", x) 來打印

思路分析

下面的程序使用 i 表示行,用 j 表示列, k 表示要放置的數,k 的范圍是 [1..n*n]

放置的過程可以簡要描述為:

1) 確定第0個數的位置

2) 放置 1~ n*n 個數:確定初步位置,也就是 i 和 j 的值; 如果出界,就進行調整;放置 k

3) 確定初步位置有兩種選擇:放置在前一個數的下方或者右上方

奇數魔方的自然語言描述如下:

確定1的位置坐標 i 和 j;

在 i 和 j 這個位置放置 1;

for (放置2~n*n個數) {

if (k in [1,n+1,2*n+1, ..., (n-1)*n+1])

下方;

else {

右上方;

}

if (在第0行) 調整到第n行;

if (在第n+1列) 調整到第1列;

放置 k 到 a[i][j];

}

輸出二維矩陣;

確定1的位置坐標 i 和 j;

在 i 和 j 這個位置放置 1;

for (放置2~n*n個數) {

if (k in [1,n+1,2*n+1, ..., (n-1)*n+1])

下方;

else {

右上方;

}

if (在第0行) 調整到第n行;

if (在第n+1列) 調整到第1列;

放置 k 到 a[i][j];

}

輸出二維矩陣;

奇數魔方的C語言參考代碼如下:

#include

#define N 21

int main(int argc, char *argv[])

{

int n, k, i, j;

int a[N][N];

scanf("%d", &n);

i= 1; j=(n+1)/2;

a[i][j]=1;

for (k=2; k<=n*n; k++) {

if (k%n==1)

i = i+1;

else {

i = i-1; j = j+1;

}

if (i==0) i = n;

if (j==n+1) j = 1;

a[i][j] = k;

}

for (i=1; i<=n; i++) {

for (j=1; j<=n; j++)

printf("%4d", a[i][j]);

printf("\n");

}

return 0;

}

#include

#define N 21

int main(int argc, char *argv[])

{

int n, k, i, j;

int a[N][N];

scanf("%d", &n);

i= 1; j=(n+1)/2;

a[i][j]=1;

for (k=2; k<=n*n; k++) {

if (k%n==1)

i = i+1;

else {

i = i-1; j = j+1;

}

if (i==0) i = n;

if (j==n+1) j = 1;

a[i][j] = k;

}

for (i=1; i<=n; i++) {

for (j=1; j<=n; j++)

printf("%4d", a[i][j]);

printf("\n");

}

return 0;

}

奇數魔方的JAVA參考代碼如下:

import java.util.Scanner;

public class P1304 {

public static void main(String[] args) {

Scanner cin = new Scanner(System.in);

int n, k, i, j;

n = cin.nextInt();

int [][] a = new int[n+1][n+1];

i= 0; j=(n+1)/2;

for (k=1; k<=n*n; k++) {

if (k%n==1 || n==1)

i = i+1;

else {

i = i -1; j = j+1;

}

if (i==0) i = n;

if (j==n+1) j = 1;

a[i][j] = k;

}

for (i=1; i<=n; i++) {

for (j=1; j<=n; j++)

System.out.printf("%4d", a[i][j]);

System.out.printf("\n");

}

}

}

import java.util.Scanner;

public class P1304 {

public static void main(String[] args) {

Scanner cin = new Scanner(System.in);

int n, k, i, j;

n = cin.nextInt();

int [][] a = new int[n+1][n+1];

i= 0; j=(n+1)/2;

for (k=1; k<=n*n; k++) {

if (k%n==1 || n==1)

i = i+1;

else {

i = i -1; j = j+1;

}

if (i==0) i = n;

if (j==n+1) j = 1;

a[i][j] = k;

}

for (i=1; i<=n; i++) {

for (j=1; j<=n; j++)

System.out.printf("%4d", a[i][j]);

System.out.printf("\n");

}

}

}

總結

以上是生活随笔為你收集整理的java 二维数组奇数金字塔_二维数组:奇数阶魔方 | 新思维:C语言程序设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。