hdu 1058 Humble Numbers
2013-05-11 20:20
417 查看
状态转移方程:F(n)=min(F(i)*2,F(j)*3,F(k)*5,F(m)*7) (n>i,j,k,m)
特别的:i,j,k,m 只有在本项被选中后才移动
题目还要注意的一点是输出问题。。。
题目传送门
参考:http://www.wutianqi.com/?p=951
特别的:i,j,k,m 只有在本项被选中后才移动
题目还要注意的一点是输出问题。。。
题目传送门
#include<stdio.h> int hum[6000]; int min(int a, int b, int c, int d) { int m; if(a>b) m = b; else m = a; if(m>c) m =c; if(m>d) m =d; return m; } int main() { int e1=1,e2=1,e3=1,e4=1; int a1,a2,a3,a4,i,n; hum[1] = 1; for(i=2;i<5843;i++) { a1 = 2*hum[e1]; a2 = 3*hum[e2]; a3 = 5*hum[e3]; a4 = 7*hum[e4]; hum[i] = min(a1,a2,a3,a4); if(hum[i] == a1) e1++; if(hum[i] == a2) e2++; if(hum[i] == a3) e3++; if(hum[i]==a4) e4++; } while(scanf("%d",&n),n) { if(n%100==11||n%100==12||n%100==13) printf("The %dth humble number is %d.\n",n,hum ); else if(n%10 == 1) printf("The %dst humble number is %d.\n",n,hum ); else if(n%10 == 2) printf("The %dnd humble number is %d.\n",n,hum ); else if(n%10 == 3) printf("The %drd humble number is %d.\n",n,hum ); else printf("The %dth humble number is %d.\n",n,hum ); } return 0; }
参考:http://www.wutianqi.com/?p=951
相关文章推荐
- HDU 1058 Humble Numbers
- HDU 1058 Humble Numbers
- 【DP】HDU-1058 Humble Numbers
- hdu1058 Humble Numbers(丑数) —— dp
- hdu 1058:Humble Numbers(动态规划 DP)
- 【HDU】1058 - Humble Numbers(dp)
- hdu 1058 Humble Numbers【丑数】
- HDU 1058 Humble Numbers(打表+暴力)
- hdu 1058 Humble Numbers
- hdu 1058 Humble Numbers
- hdu 1058 Humble Numbers (动态规划)
- HDU 1058(Humble Numbers)动态规划
- zoj 1095 || hdu 1058 Humble Numbers( DP || 乱搞)
- hdu 1058 Humble Numbers(dp)
- HDU-1058 Humble Numbers(线性dp 枚举因子个数)
- HDU-1058 Humble Numbers 暴力 Or 动态规划
- HDU 1058 Humble Numbers
- HDU 1058 Humble Numbers
- hdu1058 Humble Numbers--DP
- HDU 1058 Humble Numbers