hdu 18651sting 01背包
来源:互联网 发布:林小宅扒皮 知乎 编辑:程序博客网 时间:2024/06/03 08:09
http://acm.hdu.edu.cn/showproblem.php?pid=1865
思路:假设我们已经知道前N个数的解,这时我们求N+1个数的解可以分为两个部分,即最后一个数为1,则可得到次数目为N个数的解1,最后一个数位2,则可得到此数目为N-1个数的解,得到状态转移方程为dp[i]=dp[i-1]+dp[i-2];
此题我错了2次,究其原因为我在大数相加时,进位数加错了;我觉得避免以后出错的方法为两个数相加,可以转化为3个数相加,即多一个数d,它记录进位的值;
一下是我的错误代码:d=sum/10;
正确代码为: d=(sum+d)/10;
我的代码为;
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 500+10
char str[maxn];
int array3[maxn][maxn];
int T;
int main()
{
int len;
int i,j,sum;
int d;
memset(array3,0,sizeof(array3));
array3[1][0]=1;
array3[2][0]=2;
for(i=3;i<maxn;i++)
{
d=0;
for(j=0;j<maxn;j++)
{
sum=(array3[i-1][j]+array3[i-2][j]);
array3[i][j]=(sum+d)%10;
d=(sum+d)/10;
}
}
scanf("%d",&T);
while(T--)
{
scanf("%s",str);
len=strlen(str);
for(i=maxn-1;i>=0;i--)
if(array3[len][i]!=0)
break;
for(;i>=0;i--)
printf("%d",array3[len][i]);
printf("\n");
}
return 0;
}
- hdu 18651sting 01背包
- hdu 1865 1sting
- HDU 1865 1sting
- hdu 1865 1sting
- hdu 1865 1sting
- HDU-1865-1sting
- hdu 1865 1sting
- HDU-1865-1sting
- HDU 1865 1sting
- hdu 1865 1sting
- HDU 1865 1sting
- 01背包+完全背包 HDU
- 杭电18651sting
- sting
- HDU 2602 01背包
- HDU 1864 01背包
- hdu 1546 01背包
- hdu 3466 01背包
- android弹出对话框
- Android Adapter
- 用IT技术玩金融系列文章
- Word Break
- sdfgfhrtesfgd
- hdu 18651sting 01背包
- POD数据类型
- 逆向教程->anime radio逆向分析去广告(回编译错误分析)
- linux 环境下 用maven 创建项目(子项目分层创建)springMVC项目
- Demo POI
- CView中OnDraw()函数调用的时间
- AppScan安全漏洞报告
- leetCode:Convert Sorted Array to Binary Search Tree
- 有关ElasticSearch的一些备忘事项