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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

排列数字问题

發(fā)布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排列数字问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ?數(shù)字排列問題


? ?今有7對數(shù)字:兩個1,兩個2,兩個3,...兩個7,把它們排成一行。

? ?要求,兩個1間有1個其它數(shù)字,兩個2間有2個其它數(shù)字,以此類推,兩個7之間有7個其它數(shù)字。如下就是一個符合要求的排列:

17126425374635

當然,如果把它倒過來,也是符合要求的。

請你找出另一種符合要求的排列法,并且這個排列法是以74開頭的。

注意:只填寫這個14位的整數(shù),不能填寫任何多余的內(nèi)容,比如說明注釋等。

74****4*7*******

解:

數(shù)字排列問題:
根據(jù)已知的數(shù)列進行重新構(gòu)造,
首先已經(jīng)放置好 7 和 4 ;
所以其余位置放置為0;
從a[14]中的第一個開始進行構(gòu)造,每一位即a[t]都有1~7六種情況
在填寫的時候進行判讀當前位置是否為0,
因為要求兩個數(shù)字之間相差數(shù)字數(shù)量等于本身?
填寫一個數(shù)直接把對應(yīng)的下一個數(shù)字進行數(shù)列中賦值。
a[t]=i,a[t+i+1]=i;?
當判斷完所有位置的時候就是到達一個解空間,
當t==n-1時判斷a[n-1]最后一位。t==n時到達解空間。?


#include <stdio.h> #define n 7 int a[14]={7,4,0,0,0,0,4,0,7,0,0,0,0,0};bool ok(int t,int i) {if(t+i+1>=2*n)//控制不超出邊界 return false;if(a[t+i+1]!=0)//控制填空位置沒有數(shù)字 return false;for(int j=0;j<t;j++){//要填寫的第一個數(shù)字之前沒有出現(xiàn)過if(a[j]==i)return false;}return true; }void dfs(int t) {if(t==2*n){for(int i=0;i<2*n;i++){printf("%d ",a[i]);}printf("\n");return;}if(a[t]!=0)//當前位置有數(shù)字,進行下一位的判斷 dfs(t+1);else{for(int i=1;i<=n;i++){//每個位置都有n種可能 if(ok(t,i)){//滿足所有情況,進行賦值 并進行下一位置的構(gòu)造 a[t]=i;a[t+i+1]=i;dfs(t+1);a[t]=0;a[t+i+1]=0;}}} }int main() {dfs(0);return 0;}

總結(jié)

以上是生活随笔為你收集整理的排列数字问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。