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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

回溯法---子集和

發布時間:2024/9/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 回溯法---子集和 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.csdn.net/hustspy1990/article/details/6275725

/* 回溯法-子集和數問題 */ #include <stdio.h> int M,n; int w[100]; int x[100]; void SumOfSub(int s, int k, int r)//w數組必須是遞增的 {//s=w[1]*x[1]+...+w[k-1]*x[k-1]//r=w[k]+...w[n] //w[i]需要按非降次序排列 int i;x[k]=1;for(i=1; i<=k; i++)printf("%d", x[i]);printf("/n");if(s+w[k]==M) //子集找到{printf("ans:");for(i=1; i<=k; i++)printf("%d", x[i]);printf("/n");}else if(s+w[k]+w[k+1]<=M)SumOfSub(s+w[k], k+1, r-w[k]);if(s+r-w[k]>=M && s+w[k+1]<=M)//當在什么情況下可以不選擇w[k]而也能找到子集?{x[k]=0;SumOfSub(s, k+1, r-w[k]);} } int main() {int s,k,r;n=4;w[1]=7;w[2]=11;w[3]=13;w[4]=24;M=31;s=0;k=1;r=55;SumOfSub(s, k, r);getchar();return 0; }


可以看成背包問題,但是只能求出一個解。數組元素當成是物品,物品的價值與重量是元素的值,背包的容量是T;


總結

以上是生活随笔為你收集整理的回溯法---子集和的全部內容,希望文章能夠幫你解決所遇到的問題。

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