演算法作業——整數劃分
阿新 • • 發佈:2019-01-03
問題描述:輸入一個不小於 10 的整數,輸出其所有整數劃分。
程式碼:
#include "pch.h" #include <stdio.h> int mark[100]; int n; int num = 0; void divide(int now, int k, int pre); int main() { printf("輸入要劃分的整數:"); scanf_s("%d", &n); divide(0, 0, n ); printf("一共有%d種劃分方式\n", num); return 0; } //now記錄陣列當前長度,k記錄遞迴深度, pre記錄前一個的值 void divide(int now, int k, int pre) { int i; if (now > n) return; if (now == n) { printf("%d=", n); for (i = 0; i < k-1; i++) { printf("%d+", mark[i]); } printf("%d\n", mark[i]); num++; } else { for (i = pre; i > 0; i--) { if (i <= pre) { mark[k] = i; now += i; divide(now, k + 1, i); now -= i; } } } }
結果: