本文共 397 字,大约阅读时间需要 1 分钟。
dp[i][j]表示i个数,第一行放i个,对于1到2020的每个数,我们从小到大往里放,要时刻保证第一行的数大于等于第二行的数才能满足要求,因为越往后放的数越大,要保证后边放的大数放在下面。#includeusing namespace std;int dp[2030][2000];int main(){ dp[1][1]=1; for(int i=2;i<=2020;i++) for(int j=1;j<=i;j++) { dp[i][j]+=dp[i-1][j-1]; if(i-j<=j) dp[i][j]+=dp[i-1][j]; dp[i][j]%=2020; } printf("%d\n",dp[2020][1010]); return 0;}
转载地址:http://msgwi.baihongyu.com/