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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

×××生成算法的分析

發布時間:2025/7/14 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ×××生成算法的分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼能力實在是不夠,自己寫不來不說,看個代碼都看了好久,終于看明白了,決定寫出來,這樣或許會加深理解:
題目:生成一個四位的×××,每位是從1到7的任意數字,要求是每位之間不能重復。
代碼:

?

  • #include?<stdio.h>?
  • #define?MAXN?4?//設置每一注×××的位數??
  • #define?NUM?7?//設置組成×××的數字??
  • int?num[NUM];?
  • int?lottery[MAXN];?
  • int?c=0;?
  • void?combine(int?n,?int?m)//最外層的循環,從i=n=7開始,每位數字個數>=位數,所以又i>=m。(一位的×××至少要有一個數字)?
  • {?
  • ?????
  • ?????int?i,j;?
  • ?????for(i=n;i>=m;i--)?
  • ?????{?
  • ?????????lottery[m-1]=num[i-1];?//將第7個數字賦給×××的第4位(從高位開始賦值)??
  • ?????????if?(m>1)//如果后面還有空位沒有賦值,則再次調用此函數,繼續向后賦值?
  • ?????????????combine(i-1,m-1);?
  • ????????????//上面這句將×××位數變為3位,每位6個數字;逐層調用,直到最后×××成為一位,該為4個數字?
  • ?????????else//m?=?1;說明已經到達最后一位,輸出前面3位和最后一位??
  • ?????????{?
  • ?????????????for(j=MAXN-1;j>=0;j--)?
  • ?????????????????printf("%3d",lottery[j]);?
  • ?????????????c++;?
  • ?????????????printf("\n");?
  • ?????????}?
  • ?????}?
  • }?
  • int?main()?
  • {?
  • ????int?i,j;?
  • ????for(i=0;i<NUM;i++)??//設置×××各位數字??
  • ????????num[i]=i+1;?
  • ????for(i=0;i<MAXN;i++)?
  • ????????lottery[i]=0;?
  • ????combine(NUM,MAXN);?????
  • ????printf("%d",c);?
  • ????getch();?
  • ????return?0;?
  • }?
  • 原書中說這是回溯算法的一個例子,我個人感覺可能是因為這是逐層的調用自己,當一位的×××使用完了之后,返回到之前一位,改變之,然后在繼續改變后一位。

    轉載于:https://blog.51cto.com/baijianguo/824576

    總結

    以上是生活随笔為你收集整理的×××生成算法的分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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