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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

July面试整理系列--(5)

發布時間:2024/6/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 July面试整理系列--(5) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編程求解:
輸入兩個整數 n 和 m,從數列1,2,3.......n 中 隨意取幾個數,
使其和等于 m ,要求將其中所有的可能組合列出來.

1 #include <iostream> 2 #include <vector> 3 #include <stack> 4 5 using namespace std; 6 7 /* 8 思路: 9 h(n,m)表示從1到n中 任意取幾個數和為m的方法數。 10 則有 h(n,m)= h(n-1,m-n) 或者 h(n-1,m) (既n取或者不取) 11 當然其中 注意到 當 m < n 時 可以 直接跳到 h(m,m).還要注意邊界條件,既當滿足什么條件是 12 可以直接得出結果。 13 14 遞歸深搜 15 */ 16 stack<int> ans; 17 void fun(int n,int m) 18 { 19 if(n >= 0 && m == 0) 20 { 21 stack<int> ans_tmp = ans; 22 while(!ans_tmp.empty()) 23 { 24 cout<<ans_tmp.top()<<" "; 25 ans_tmp.pop(); 26 } 27 cout<<endl; 28 return; 29 } 30 if(n == 1 && m == 1) 31 { 32 ans.push(1); 33 stack<int> ans_tmp = ans; 34 while(!ans_tmp.empty()) 35 { 36 cout<<ans_tmp.top()<<" "; 37 ans_tmp.pop(); 38 } 39 cout<<endl; 40 ans.pop(); 41 return; 42 } 43 if(n == 1 && m > 1) 44 { 45 return; 46 } 47 if(n <= m) 48 { 49 ans.push(n); 50 fun(n-1,m-n); 51 ans.pop(); 52 53 fun(n-1,m); 54 } 55 else 56 { 57 fun(m,m); 58 } 59 return; 60 } 61 62 int main() 63 { 64 fun(10,7); 65 return 0; 66 }

轉載于:https://www.cnblogs.com/cane/p/3850825.html

總結

以上是生活随笔為你收集整理的July面试整理系列--(5)的全部內容,希望文章能夠幫你解決所遇到的問題。

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