hdu 5062(dp)
生活随笔
收集整理的這篇文章主要介紹了
hdu 5062(dp)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意:求1到10的n次方的范圍內(nèi),滿足:
1、是回文數(shù);
2、回文的前半部分滿足升序;
解題思路:dp[i][j]第i個(gè)數(shù)是j的遞增序列的個(gè)數(shù)。假設(shè)求k位數(shù)滿足條件的序列個(gè)數(shù),只需要求出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; }
總結(jié)
以上是生活随笔為你收集整理的hdu 5062(dp)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决Shockwave flash在谷歌
- 下一篇: springboot2.0集成activ