1 条题解
-
0
C++ :
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #include<map> #include<vector> #include<queue> #include<string> #include<fstream> int n; int a[10001]; int print(int x) { for(int i=1;i<=x-1;++i) { printf("%d+",a[i]); } printf("%d\n",a[x]); } int search(int sum,int t) { for(int i=a[t-1];i<=sum;++i) { if(i<n) { a[t]=i; sum=sum-i; if(sum==0) { print(t); } else { search(sum,t+1); } sum=sum+i; } } } using namespace std; int main() { cin>>n; a[0]=1; search(n,1); return 0; }
Pascal :
var n:longint; a:array[0..10000] of longint; procedure dfs(t,sum:longint); var i:longint; begin if sum=n then begin if a[1]<>n then begin write(a[1]); for i:=2 to t-1 do write('+',a[i]); writeln; end; exit; end; for i:=a[t-1] to n-sum do begin a[t]:=i; dfs(t+1,sum+i); end; end; begin readln(n); a[0]:=1; dfs(1,0); end.
Java :
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { int n = in.nextInt(); int[] list = new int[n]; trackBack(1, list, 0, n, 0, 0); } } public static void trackBack(int curNum, int[] list, int before, int n, int sum, int index) { for (int i = 1; i < n; i++) { if (i < before && index != 0) continue; if (index >= n) continue; list[index] = i; if (sum + i == n) { System.out.print(list[0]); for (int k = 1; k <= index; k++) System.out.print("+" + list[k]); System.out.println(); // continue; } trackBack(curNum + i, list, i, n, sum + i, index + 1); } } }
- 1
信息
- ID
- 666
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者