2985 數字組合

2021-08-04 15:24:33 字數 2944 閱讀 8443

/*

name: 2985_數字組合

author:

date: 26-07-17 22:52

description: 2985_數字組合

檢視 提交 統計 提問

總時間限制: 1000ms 記憶體限制: 65536kb

描述有n個正整數,找出其中和為t(t也是正整數)的可能的組合方式。如:

n=5,5個數分別為1,2,3,4,5,t=5;

那麼可能的組合有5=1+4和5=2+3和5=5三種組合方式。

輸入輸入的第一行是兩個正整數n和t,用空格隔開,其中1<=n<=20,表示正整數的個數,t為要求的和(1<=t<=1000)

接下來的一行是n個正整數,用空格隔開。

輸出和為t的不同的組合方式的數目。

樣例輸入

5 51 2 3 4 5

樣例輸出

3演算法分析:這是乙個典型的0-1揹包問題,只不過不是求最優解,而是求所有可能的組合,故需要累計所有的組合。

*/#includeusing namespace std;

const int maxc = 10000; //揹包最大容量

const int maxn = 100; //物品的最大個數

int v[maxn+1];//第i個數的值相當於0-1揹包中物品的重量和價值

long long f[maxc+1] = ; //記錄給定n個物品裝入容量為j的揹包的分配方案數量

long long zeroonepack_5(int n, int c);//可以轉化為求0-1揹包的方案總數

int main()

cout << zeroonepack_5(n, c) << endl;

return 0;

}long long zeroonepack_5(int n, int c)//可以轉化為求0-1揹包的方案總數 }

return f[c];

}

/*

name: 2985_數字組合

author:

date: 26-07-17 22:52

description: 2985_數字組合

檢視 提交 統計 提問

總時間限制: 1000ms 記憶體限制: 65536kb

描述有n個正整數,找出其中和為t(t也是正整數)的可能的組合方式。如:

n=5,5個數分別為1,2,3,4,5,t=5;

那麼可能的組合有5=1+4和5=2+3和5=5三種組合方式。

輸入輸入的第一行是兩個正整數n和t,用空格隔開,其中1<=n<=20,表示正整數的個數,t為要求的和(1<=t<=1000)

接下來的一行是n個正整數,用空格隔開。

輸出和為t的不同的組合方式的數目。

樣例輸入

5 51 2 3 4 5

樣例輸出

3演算法分析:這是乙個典型的0-1揹包問題,只不過不是求最優解,而是求所有可能的組合,故需要累計所有的組合。

*/#includeusing namespace std;

const int maxc = 1000; //揹包最大容量

const int maxn = 20; //物品的最大個數

int v[maxn+1];//第i個數的值相當於0-1揹包中物品的重量和價值

long long b3[maxn+1][maxc+1] = ; //記錄給定n個物品裝入容量為j的揹包的分配方案數量

int zeroonepack_3(int n, int c);//可以轉化為求0-1揹包的方案總數

int main()

cout << zeroonepack_3(n, c) << endl;

return 0;

}int zeroonepack_3(int n, int c)//可以轉化為求0-1揹包的方案總數

} return b3[n][c];

}

/*

name: 2985_數字組合

author:

date: 26-07-17 22:52

description: 2985_數字組合

檢視 提交 統計 提問

總時間限制: 1000ms 記憶體限制: 65536kb

描述有n個正整數,找出其中和為t(t也是正整數)的可能的組合方式。如:

n=5,5個數分別為1,2,3,4,5,t=5;

那麼可能的組合有5=1+4和5=2+3和5=5三種組合方式。

輸入輸入的第一行是兩個正整數n和t,用空格隔開,其中1<=n<=20,表示正整數的個數,t為要求的和(1<=t<=1000)

接下來的一行是n個正整數,用空格隔開。

輸出和為t的不同的組合方式的數目。

樣例輸入

5 51 2 3 4 5

樣例輸出

3演算法分析:這是乙個典型的0-1揹包問題,只不過不是求最優解,而是求所有可能的組合,故需要累計所有的組合。

*/#includeusing namespace std;

const int maxc = 10000; //揹包最大容量

const int maxn = 100; //物品的最大個數

int v[maxn+1];//第i個數的值相當於0-1揹包中物品的重量和價值

long long b3[maxn+1][maxc+1] = ; //記錄給定n個物品裝入容量為j的揹包的分配方案數量

int zeroonepack_3(int n, int c);//可以轉化為求0-1揹包的方案總數

int main()

cout << zeroonepack_3(n, c) << endl;

return 0;

}int zeroonepack_3(int n, int c)//可以轉化為求0-1揹包的方案總數

2985 數字組合

2985 數字組合 總時間限制 1000ms 記憶體限制 65536kb 描述 有n個正整數,找出其中和為t t也是正整數 的可能的組合方式。如 n 5,5個數分別為1,2,3,4,5,t 5 那麼可能的組合有5 1 4和5 2 3和5 5三種組合方式。輸入 輸入的第一行是兩個正整數n和t,用空格隔...

noi 2985 數字組合

2985 數字組合 總時間限制 1000ms 記憶體限制 65536kb 描述有n個正整數,找出其中和為t t也是正整數 的可能的組合方式。如 n 5,5個數分別為1,2,3,4,5,t 5 那麼可能的組合有5 1 4和5 2 3和5 5三種組合方式。輸入輸入的第一行是兩個正整數n和t,用空格隔開,...

數字組合問題

題目 有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?程式分析 可填在百位 十位 個位的數字都是1 2 3 4。組成所有的排列後再去 掉不滿足條件的排列。方法一 列出取值範圍內所有資料,分別檢查是否符合條件 public static void calculatenum1...