basic程式設計列印N x N的數字方陣。由M N 1,2,3M連續自然數轉圈組成

時間 2022-06-05 02:15:05

1樓:袁世平

感覺我的程式太low了...

不知道這題到底正解是不是搜尋,我感覺不是...

反正我的搜尋加了乙個小剪枝仍然最多在2s跑完(4,5) 這個樣例.

問題是,我感覺不太會加剪枝了!...

所以(5,5)這個點一直沒有跑過去.

#include

#include

#include

using namespace std;

const int maxn=6;

int n,m,nm,idex;

int a[maxn][maxn];

bool used[maxn*maxn];

void dfs(int x,int y)//min表示這個位置上能填的最小值,max表示能填的最大值int min=max(a[x-1][y],a[x][y-1])+1;

min=max(min,x*y);

//min必須比這一列的前乙個大,必須比這一行的前乙個大//min必須比x*y大,因為它是x*y的矩陣中最大的乙個int max=nm-(n-x+1)*(m-y+1)+1;

//max必須小於nm-(n-x+1)*(m-y+1)+1,因為它是右下角這個矩形裡最小的乙個

for(int i=min;i<=max;i++)}}int main()不過我還是把**發上來吧,也期待別人的回答

用c語言如何程式設計列印出由1到n^2的自然數構成的魔方陣,?

2樓:

奇數魔方陣就是將數字排列在nxn(n為奇數)的方陣上,要求滿足各行、各列與各對角線的和相同。如下圖所示,是n=5的奇數魔方陣。

填魔方陣的方法以奇數魔方陣最為簡單,第乙個數字放在第一行的正**(填了1),然後向右(左)上填,如果右(左)上已有數字,則向下填,如下圖所示:

一般程式語言的陣列多由0開始,為了計算方便,我們利用索引1到n的部份,而在計算是向右(左)上或向下時,我們可以將索引值除以n值,如果得到餘數為1就向下,否則就往右(左)上。

4n 魔方陣

與奇數魔術方陣相同,在於求各行、各列與各對角線的和相等,不同的是這次方陣的維度是4的倍數。

先來看看4x4方陣的解法:

簡單的說,就是乙個從左上由1依序開始填,但遇對角線不填,另乙個由左上由16開始填,但只填在對角線,再將兩個合起來就是解答了。如果n大於等於2,則以 4x4為單位畫對角線,如下所示:

至於對角線的位置該如何判斷,有兩個公式,有興趣的可以畫圖印證,如下:

左上至右下:j % 4 == i % 4

右上至左下:(j % 4 + i % 4) == 1

8階魔方陣(n=2)的結果如下:

列印乙個n*n的數字方陣,c++或c語言 25

3樓:匿名使用者

4* 4的期望值是什麼呢?橫向和縱向是什麼規律?

c++程式設計有乙個n×m的矩陣,把1,2,3…………n×m個自然數填入矩陣中,每個格仔填乙個數,

4樓:匿名使用者

int a[m][n],b[m][n];

分別2個陣列賦值

int i,j;

for(i = 0; i < m; i++)for(j = 0; j < n; j++)a[i][j] += b[i][j];

最後輸出a陣列元素就是結果了

c++程式設計有乙個n×m的矩陣,把1,2,3…………n×m個自然數填入矩陣中,每個格仔填乙個數,

5樓:匿名使用者

n能到6,是狀壓動規:

#include

using namespace std;

int n,m,f[8000];

int get(int *a)

for(int i=1;i>n>>m;

m++;

f[0]=1;

int t=1;

for(int i=1;i<=n;++i)t*=m;

cout<

return 0;}

用c語言程式設計列印出由1到n^2的自然數構成的魔方陣,n由鍵盤輸入。魔方陣的每一行每一列和對角線均相等。

6樓:

.初始化

建立n*n方陣(n為奇數), 並以0填充

以整數h表示方陣列, v表示方陣行

h = n-1

v = n/2

.初始化完畢

.定義當前: 當前方陣行列位置(v, h)

下一: 下一方陣行列位置(v+1, h+1)

.定義完畢

.開始1. 判斷: 數是否填完

是: 結束

否: 當前: 填數

2. 判斷: 下一 是否越界

是: 下一: 越界座標置0

否: 繼續

3. 判斷: 下一 是否為0

是: 當前 = 下一, 轉1

否: 當前: h減1, v不變, 轉1

.結束#include

#include

/*----------------------------------------*/

struct stpos

cur, next;

/*--定義方陣行列表示方法:h表示列,v表示行--*/

int main()

while (!(isize % 2));

/*--------------------------------*/

if ((pinumber = (int *)malloc(isize * isize * sizeof(int))) == null)

cur.h = isize - 1;

cur.v = isize / 2;

j = isize * isize;

for (i = 0; i < j; i++)

*(pinumber + i) = 0;

/*--------------初始化------------*/

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

/*-------------處理模組-----------*/

for (i = 0; i < j; ++i)

/*-------------列印結果-----------*/

free(pinumber);

return 0;}

7樓:

#include

int main()

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

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

a[i][j]=0;

j=n/2+1;

a[1][j]=1;

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

else

if (a[i][j]==0)

a[i][j]=k;

else

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

return 0;}

8樓:匿名使用者

#include"stdio.h"

main()

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

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

a[i][j]=0;

j=n/2+1;

a[1][j]=1;

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

else

if(a[i][j]==0)a[i][j]=k;

else

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

c++程式:蛇形矩陣:生成乙個按蛇形方式排列自然數1,2,3,4,5,……,n^2的 n(1 < n <= 15)階方陣.

9樓:何渡忘川

#include

void main()

//輸出下三角

for(i=n+1;i<2*n;i++)

for(j=1;j<=2*n-i;j++)printf("output\n");

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

printf("\n");}

程式設計要求輸入五位數,輸出它的各個數字上數字之和

謝應宸 1 include include include int f int x return sum void main 2 include include include void main printf 加密後為 s n buf 滄海雄風 第一題 123sum 6 press any key...

2的2019次方的個位數字是多少

秋狸 2的各個次方末位的規律如下 1 1 2,末位是2 2 2 4,末位是4 2 3 8,末位是8 2 4 16,末位是6 2 5 32,末位是2 2 6 64,末位是4 2 7 128,末位是8 2 8 256,末位是6 綜上所述,2的各個次方的個位上的數字是2 4 8 6,四個數的迴圈,又因為2...

程式設計實現求2的零次方加2的一次方一直加到2的十次方的值

include include void main int i,n,sum 0 printf please input n scanf d n for i 0 i n i sum pow 2,i printf sum d n sum include include void main int i 0...