請大神幫忙設計完整的c語言程式,實現”在4乘4的棋盤上放置棋,要求每一行每一列上只能放置”

時間 2021-08-30 11:20:57

1樓:

樓主你好。見醜了。。我用了一個窮舉的方法。我寫的**的好處在於易於擴充套件,n代表了棋盤的大小,你可以任意修改,不止是4。

【經過幾次優化後變為以下**,採用回溯法】

#include

#include

#define n 6

#define noprinting //標誌是否列印陣列

//如果只是計算可能的情況的話,根本不需要n×n的棋盤陣列。

void printmatrix(int* matrix, int m, int n)

printf("\n");}}

void recusion(int* chessboard, int n, int iter, int* count, int* col)

for(i=0;i

#ifndef noprinting

currentrow[i]=currentrow[j]=0;//清空當前行

#endif}}

}void putchess(int* chessboard, int n, int* count)

void main();

printf("**********start to put chess!**********=\n");

printf("all %d possible deploy!\n", count);

}輸出:

【n為3且選擇列印】

**********start to put chess!**********=

1 1 0

1 0 1

0 1 1

******************************=

1 1 0

0 1 1

1 0 1

******************************=

1 0 1

1 1 0

0 1 1

******************************=

1 0 1

0 1 1

1 1 0

******************************=

0 1 1

1 1 0

1 0 1

******************************=

0 1 1

1 0 1

1 1 0

******************************=

all 6 possible deploy!

press any key to continue

【n為8的時候,有近兩億種情況,花了將近一分鐘的時間算完。】

**********start to put chess!**********=

all 187530840 possible deploy!

press any key to continue

2樓:mis_丫

要列出所有情況?

不現實吧,太多了,算出有幾種還可以

只要一種那你直接指定位置就好了啊

比如:a[0][0] ,a[0][1],

a[1][0] ,a[1][1],

a[2][2] ,a[2][3],

a[3][2] ,a[3][3],

3樓:匿名使用者

編的話我應該會,你說的數學情況我不大懂

是說每行列最多兩個,還是都要有兩個呢?

4樓:匿名使用者

情況比較複雜,最好從每行每列放一個開始吧。

5樓:愛我所愛

只是純粹的放置標誌量麼?有沒有遊戲規則什麼的

c語言編寫一個程式,實現一個3×4矩陣轉置。

6樓:匿名使用者

思路:定了bai兩個二維陣列分du別儲存轉置前zhi後的矩陣,接著for迴圈依次轉置dao即可。內//參考**

#include

int main()

,,},b[4][3];

int i,j;

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

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

容b[j][i]=a[i][j];

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

return 0;}/*

執行結果:

1  5  9

2  6 10

3  7 11

4  8 12*/

7樓:匿名使用者

#include

void main()

for(i=0;i

for(j=0;j

b[j][i]=a[i][j];

for(i=0;i

幫忙找個c語言程式,重謝,幫忙找個C語言程式,重謝!

請編寫程式,定義一個顧客的結構體型別,其成員為 編號 姓名 商品數量,商品總額 輸入十名顧客的資訊到結構體陣列中,最後統計這十名中購買商品總額最大的顧客,將他的資訊列印輸出。並按照下列各式把資訊存入到customer.txt中 0001 kate 5 822.8 0002 jame 7 2761.9...

C語言程式填空題,求大神幫忙解答

依次填 p1 i p2 i return 0 p1 i p2 i 風若遠去何人留 第一個空 p1 i p2 i 表示相同時 執行迴圈 第二個空,判斷條件為p1到達結尾,即結束符,退出迴圈 填break 第三個返回差值 p1 i p2 i c語言程式填空題,求大神幫忙解答,給個解析,謝謝。 這就是數學...

c語言作業,求大神幫忙,C語言作業,求大神幫忙

include 求一個數的因子 void divisor int num,int a a 0 判斷一個數是否為素數 char isprime int num return 1 把陣列a裡面的素數放到b裡 void prime to arry int a,int b a b 0 void main p...