日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

×××生成算法的分析

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

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

?

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

    轉(zhuǎn)載于:https://blog.51cto.com/baijianguo/824576

    總結(jié)

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

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