hdu 5062(dp)
生活随笔
收集整理的这篇文章主要介绍了
hdu 5062(dp)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题意:求1到10的n次方的范围内,满足:
1、是回文数;
2、回文的前半部分满足升序;
解题思路:dp[i][j]第i个数是j的递增序列的个数。假设求k位数满足条件的序列个数,只需要求出dp[k/2][1.....9]的总和即可。
#include<iostream> #include<cstdio> #include<cstring> using namespace std;int dp[10][10]; void init() {dp[0][1] = 1;for(int i = 1; i <= 9; i++) dp[1][i] = 1;for(int i = 2; i <= 6; i++)for(int j = 1; j <= 9; j++)for(int k = 1; k < j; k++)dp[i][j] += dp[i-1][k]; }int main() {int t,n;init();scanf("%d",&t);while(t--) {scanf("%d",&n);if(n == 0) {printf("1\n");continue;}int ans = 0;for(int i = 1; i <= n; i++)for(int j = 1; j <= 9; j++) {if(i % 2 == 0)ans += dp[i / 2][j];else ans += dp[i / 2 + 1][j];}printf("%d\n",ans);}return 0; }
总结
以上是生活随笔为你收集整理的hdu 5062(dp)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 解决Shockwave flash在谷歌
- 下一篇: springboot2.0集成activ