HDU 2512 一卡通大冒险
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512
1 //dp[i][j] 表示i个卡片分成j组 由两种状态转移过来 2 //一:第i个卡片单独分成一组,那有dp[i-1][j-1]种 3 //二:第i张牌与其他组任意一组夹在一块,i-1张牌就得分成j组,那就是dp[i-1][j]种乘上个j,即dp[i-1][j]*j种 4 //处理边界情况:多个牌分成一组的话 dp[i][1] = 1,多个牌分成同样多组的话 dp[i][i] = 1 5 #include <iostream> 6 #include <cstdio> 7 #include <cstring> 8 using namespace std; 9 int dp[2005][2005]; 10 int main() 11 { 12 for(int i = 1 ; i <= 2000 ; ++i) { 13 for(int j = 1 ; j <= i ; ++j) { 14 if(i == j || j == 1) 15 dp[i][j] = 1; 16 else 17 dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j] * j) % 1000; 18 } 19 } 20 int t , n; 21 scanf("%d" , &t); 22 for(int ca = 1 ; ca <= t ; ++ca) { 23 scanf("%d" , &n); 24 int res = 0; 25 for(int i = 1 ; i <= n ; ++i) 26 res = (res + dp[n][i]) % 1000; 27 printf("%d\n" , res); 28 } 29 }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步