DP
来源:互联网 发布:广州多益网络 招聘 编辑:程序博客网 时间:2024/04/19 22:07
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1884
Problem A: How do you add?
Larry is very bad at math - he usually uses a calculator, which worked well throughout college. Unforunately, he is now struck in a deserted island with his good buddy Ryan after a snowboarding accident. They're now trying to spend some time figuring out some good problems, and Ryan will eat Larry if he cannot answer, so his fate is up to you!It's a very simple problem - given a number N, how many ways can K numbers less than Nadd up to N?
For example, for N = 20 and K = 2, there are 21 ways:
0+20
1+19
2+18
3+17
4+16
5+15
...
18+2
19+1
20+0
Input
Each line will contain a pair of numbers N and K. N and K will both be an integer from 1 to 100, inclusive. The input will terminate on 2 0's.Output
Since Larry is only interested in the last few digits of the answer, for each pair of numbers N and K, print a single number mod 1,000,000 on a single line.Sample Input
20 220 20 0
Sample Output
2121状态转移方程:f[i][j]+=f[i-1][k].i为选取i个数,j为从j个数里选,k为从k个数里选。
#include <iostream>#include <cstring>using namespace std;const int maxn=111;int f[maxn][maxn];int n,K;const int mod=1000000;int main(){ while (cin>>n>>K){ if (n==0&&K==0) break; memset(f,0,sizeof(f)); for (int i=0;i<=n;i++) f[1][i]=1; for (int i=2;i<=K;i++){ for (int j=0;j<=n;j++){ for (int k=0;k<=j;k++){ f[i][j]+=(f[i-1][k])%mod; f[i][j]%=mod; } } } cout<<f[K][n]<<endl; } return 0;}
0 0
- dp
- dp
- dp
- 【DP】
- dp
- dp
- DP
- DP
- DP
- DP
- DP
- dp
- DP
- dp
- DP
- DP
- dp
- DP
- recovery 原理 可见一斑
- 数组
- iOS定位原理和使用建议
- 对xml节点进行修改和编写
- day50(4.30)日期方法的使用和总结
- DP
- Android ViewPager使用详解
- async & await 的前世今生(Updated)2014-02-24 08:24 by Jesse Liu,
- 关于Core Location-ios定位
- Java中方法覆盖的注意事项
- PHP调用MYSQL存储过程实例
- json 反序列化
- TP-LINK Mini系列无线路由器设置指南(一)——AP模式
- 关于coreLocation - 地理位置反向编码