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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

7-37 整数分解为若干项之和(20 分)

發布時間:2024/8/26 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7-37 整数分解为若干项之和(20 分) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

7-37

7-37 整數分解為若干項之和(20 分)

將一個正整數N分解成幾個正整數相加,可以有多種分解方法,例如7=6+1,7=5+2,7=5+1+1,…。編程求出正整數N的所有整數分解式子。

輸入格式:

每個輸入包含一個測試用例,即正整數N (0<N≤30)。

輸出格式:

按遞增順序輸出N的所有整數分解式子。遞增順序是指:對于兩個分解序列\(N_1={n_1,n_2,?}\)\(N_2={m_1,m_2,?}\),若存在i使得\(n_1=m_1,?,n_i=m_i\),但是\(n_{i+1}<m_{i+1}\),則\(N_1\)序列必定在\(N_2\)序列之前輸出。每個式子由小到大相加,式子間用分號隔開,且每輸出4個式子后換行。

輸入樣例:

7

輸出樣例:

7=1+1+1+1+1+1+1;7=1+1+1+1+1+2;7=1+1+1+1+3;7=1+1+1+2+2 7=1+1+1+4;7=1+1+2+3;7=1+1+5;7=1+2+2+2 7=1+2+4;7=1+3+3;7=1+6;7=2+2+3 7=2+5;7=3+4;7=7

AC代碼

#include<stdio.h>int N;int s[31]; // 存放劃分結果,這里用了比較簡單地容器,數組,比我想象的要簡單 int top = -1; // 數組指針 int count = 0; // 統計輸出的次數 int sum = 0; // 拆分項累加和 void division (int i);int main (){scanf ("%d", &N);division (1);return 0; }void division (int i) {//拆分 if (sum == N) {count ++;printf("%d=", N);int k;for (k=0; k<top; k++) {printf("%d+", s[k]);}if (count%4 == 0 || s[top] == N) {printf("%d\n", s[top]);} else {printf("%d;", s[top]);}return;} // 輸出部分 if (sum > N) {return;}for (int j=i; j<=N; j++) { s[++top] = j;sum += j; division (j);sum -= j;top --;} // 算法主體 } #include<stdio.h> #include<iostream> using namespace std; int flag = 0, n, a[35]; void f(int len, int pos, int next) {if (pos + next > n)return; //如果值大于N就沒有繼續的必要了a[len++] = next; //保存路徑if (pos+next == n){cout << n << "=";for (int i = 0; i < len; i++){if (i == 0) cout << a[i];else cout << "+" << a[i];}if (++flag % 4 == 0||next == n)cout << endl; //每輸出四個一次回車else cout << ";"; //每行輸出最后一個不帶分號}if (pos + next < n){pos += next;for (int i = next; i <= n - pos; i++)//根據規律得出后面的i>=nextf(len, pos, i);}} int main() {cin >> n;for (int i = 1; i <= n / 2; i++) //i小于n/2,防止7=3+4、7=4+3該類情況f(0, 0, i);f(0, 0, n); //7=7的時候特殊處理 return 0; }

相關思考

5-37 整數分解為若干項之和 - 文之 - 博客園 https://www.cnblogs.com/andywenzhi/p/5738715.html

7-37 整數分解為若干項之和 - 我只有一件白T恤 - 博客園 http://www.cnblogs.com/zengguoqiang/p/8342519.html

我的想法和白T恤接近,這個遞歸也是極好的

算法的處理流程是:

  • 假設輸入的 N 為 3:
第一層遞歸第二層遞歸第三層遞歸主要執行細節
division (1) sum = 1,不跳出 →division (1) sum = 2,不跳出 →division (1) sum = 3 等于 N,輸出當前序列 1 1 1, 跳出,執行 for 循環,sum 均大于 3,跳出,返回上一層 ↓第三層 s[0] s[1] s[2] 動作 1 1 1 輸出 1 1 2 跳出 1 1 3 跳出 1 1 4 跳出
開始處理 division (2) sum = 3,輸出當前序列 1 2,然后跳出,執行 for 循環,均跳出 ← 返回至上一層← 返回至上一層第二層 s[0] s[1] 動作 1 2 輸出 1 3 跳出 1 4 跳出
開始處理 division (2) sum = 2,不跳出 →division (2) sum = 4,跳出,返回上一層 ↓第二層 s[0] s[1] 動作 2 2 跳出
開始處理 division (3) sum = 3, 輸出當前序列 3,結束程序← 返回至上一層第一層 s[0] 動作 3 跳出
  • 箭頭指明了各層之間的流動方向。

轉載于:https://www.cnblogs.com/lingr7/p/9278458.html

總結

以上是生活随笔為你收集整理的7-37 整数分解为若干项之和(20 分)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 泰坦尼克号3小时49分的观看方法 | 天天爽夜夜操 | 成人综合影院 | 寡妇av| 国产精品免费观看视频 | 久久免费看毛片 | 一本色道久久综合亚洲 | 97人妻人人澡人人爽人人精品 | 一区三区视频在线观看 | 日日爽天天 | 欧美激情三区 | 91丝袜一区二区三区 | 小蝌蚪av| 99精品乱码国产在线观看 | 美腿丝袜亚洲色图 | 2018自拍偷拍 | www国产视频 | 日韩av一区在线 | av高清在线免费观看 | 亚洲AV无码阿娇国产精品 | 日本精品黄色 | 公侵犯一区二区三区 | 久久久噜噜噜www成人 | 亚洲中文字幕一区 | 色噜噜日韩精品欧美一区二区 | 成人在线视频网站 | 无码国产精品96久久久久 | 欧美卡一卡二 | 福利电影一区二区三区 | 777奇米四色 | 成人免费av片| 成人宗合 | 国产精品老熟女视频一区二区 | 国产一级视频免费观看 | 天天做天天看 | 亚洲aⅴ乱码精品成人区 | 吖v在线| 91在线第一页 | 能看的av网站| 五月婷婷免费视频 | 亚洲三级网站 | 新天堂av| 日本三级久久 | 精品成人网| 国产又黄又| 国产黄色精品视频 | 久久中文一区 | 午夜一区在线观看 | 欧美黑人做爰爽爽爽 | 中文字幕在线导航 | 蜜芽在线视频 | 日日弄天天弄美女bbbb | 国产情侣小视频 | 日本打白嫩屁股视频 | 殴美一级黄色片 | 精品国产二区三区 | 久久精品黄aa片一区二区三区 | 亚洲国产成人在线 | 日本bdsm视频 | 韩国一二三区 | 日韩精品一卡二卡 | 99热在线观看免费 | 欧美三级电影在线观看 | 手机看片福利视频 | 国产草草影院 | 自拍偷拍av | 另类老妇性bbwbbw图片 | 中文字幕精品无码一区二区 | 欧美成人片在线观看 | 国产美女无遮挡免费 | 调教亲女小嫩苞h文小说 | 精品国产99久久久久久宅男i | 密臀av| 国产视频在线观看一区 | 日本黄色片免费 | 亚洲欧洲日韩综合 | 亚洲v在线观看 | 在线观看av毛片 | 黄色av大全 | 日本成人在线看 | 理论在线视频 | 成人免费看类便视频 | 精品人妻av一区二区三区 | 性生交大片免费看女人按摩 | 日本免费一二区 | 亚洲欧美日韩综合在线 | 国产八区 | 免费在线观看污 | 亚洲国产私拍精品国模在线观看 | 亚洲国产日韩一区 | 爽爽窝窝午夜精品一区二区 | 国产激情av在线 | 国产伦精品一区二区三区视频黑人 | 波多野吉衣一二三区乱码 | 亚洲色图偷拍视频 | 中文字幕a√| 91九色网站 | 苍井空浴缸大战猛男120分钟 | 精品少妇一区二区三区密爱 |