【POJ 1850】 Code
2017-06-07 11:22
344 查看
【POJ 1850】 Code
还是非常想说
数位dp真的非常方便!
!。
数位dp真的非常方便!。!
数位dp真的非常方便!
!!
重要的事说三遍
该题转换规则跟进制差点儿相同 到z时进一位 如az下位为bc 上位必须比下位小
依据这个规则搜出全部情况就可以
还是非常想说
数位dp真的非常方便!
!。
数位dp真的非常方便!。!
数位dp真的非常方便!
!!
重要的事说三遍
该题转换规则跟进制差点儿相同 到z时进一位 如az下位为bc 上位必须比下位小
依据这个规则搜出全部情况就可以
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int dp[11][27]; int digit[11]; /* 1~26表示加的字母 0表示不加 有前导时 枚举pre+1 ~ 26-pos 没有的话枚举 0 ~ 26-pos */ int dfs(int pos,int pre,bool high) { if(pos == -1) return pre > 0; if(!high && ~dp[pos][pre]) return dp[pos][pre]; int i,en,ans = 0,st; en = high? digit[pos]: 26-pos; st = pre? pre+1: 0; for(i = st; i <= en; ++i) ans += dfs(pos-1,i,high && i == en); if(!high) dp[pos][pre] = ans; return ans; } int Solve(char *str) { int i,len = strlen(str); for(i = 0; i < len; ++i) { digit[i] = str[len-i-1]-'a'+1; } return dfs(len-1,-1,1); } int main() { memset(dp,-1,sizeof(dp)); char str[11],i; scanf("%s",str); for(i = 0; str[i+1]; ++i) { if(str[i] >= str[i+1]) { puts("0"); return 0; } } printf("%d\n",Solve(str)); return 0; }
相关文章推荐
- poj1850~Code~(组合数的应用)
- [poj 1850] Code 组合数学
- poj 1850 Code 1496 Word Index
- POJ 1850 Code(排列数组)
- 【POJ 1850】 Code
- poj 1850 code(组合数学)
- poj 1850 Code 组合数学
- poj1850 Code
- POJ - 1850 Code
- poj-1850-Code
- 组合数学 POJ 1850 Code
- 【组合数学】POJ_1850_Code
- POJ 1850Code(组合数学)
- [POJ 1850] Code
- poj 1850 Code
- POJ 1850 Code (组合数学)
- POJ1850——Code
- poj 1850 Code (组合数学)
- POJ 1850 Code(组合数学)
- poj 1850 Code