码迷,mamicode.com
首页 > 其他好文 > 详细

uva11375Dp

时间:2014-10-11 13:04:15      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   for   sp   div   

题意:给你n个火柴问能组成多少种不同的整数。

6个及以上跟棒子的答案要加1 ,算上 0。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <climits>
#include <string>
#include <iostream>
#include <map>
#include <cstdlib>
#include <list>
#include <set>
#include <queue>
#include <stack>
#include <math.h>
using namespace std;
const int maxn = 6666;
int d[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 };
char dp[maxn][maxn];
void gao(char *s1, char *s2)
{
    int a[maxn] = { 0 }; int b[maxn] = { 0 }; int  c[maxn] = { 0 };
    int len1 = strlen(s1); int len2 = strlen(s2);
    int len = max(len1, len2);
    for (int i = 0; i < len1; i++){
        a[i] = s1[len1 - 1 - i] - 0;
    }
    for (int i = 0; i < len2; i++){
        b[i] = s2[len2 - i - 1] - 0;
    }
    for (int i = 0; i < len; i++){
        c[i] += a[i] + b[i];
        c[i + 1] = c[i] / 10;
        c[i] %= 10;
    }
    len++;
    while (!c[len]) len--;
    for (int i = 0; i <= len; i++)
        s1[i] = c[len - i] + 0;
    s1[len + 1] = \0;
}
int main()
{
    int n;
    dp[0][0] = 1;
    dp[0][1] = \0;
    for (int i = 0; i <= 2000; i++){
        for (int j = 0; j < 10; j++){
            if ((i == 0 && j == 0) || i + d[j]>2000)  continue;
            gao(dp[i + d[j]], dp[i]);
        }
    }
    char str3[]= {"1"};
    gao(dp[6],str3);
    for (int i = 2; i <= 2000; i++){
        gao(dp[i], dp[i - 1]);
    }
    while (cin >> n){
        if(n==1){
            cout<<0<<endl;continue;
        }
        cout << dp[n] << endl;
    }
    return 0;
}

 

uva11375Dp

标签:style   blog   color   io   os   ar   for   sp   div   

原文地址:http://www.cnblogs.com/yigexigua/p/4018381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!