java数例递推的程序_POJ 2506 Tiling(大数递推&&(数组模拟||JAVA))

3

171

2731

845100400152152934331135470251

1071292029505993517027974728227441735014801995855195223534251

递推公式f[i] = f[i-1] + 2*f[i-2];

不明白的是0的时候为什么输出1,让我WA了好几遍

#include

#include

#include

#include

using namespace std;

const int N = 300;

char a[N][N];

void sum(int x,char s1[],char s2[])

{

int len1=strlen(s1);

int len2=strlen(s2);

int e1[N],e2[N];

memset(e1,0,sizeof(e1));

memset(e2,0,sizeof(e2));

for(int i=0; i

e1[i]=s1[len1-i-1] - '0';

for(int i=0; i

e2[i]=s2[len2-i-1] - '0';

int k=len1;

if(k

k=len2;

for(int i=0; i

{

e1[i]+=e2[i] + e2[i];

if(e1[i]>=10)

{

e1[i+1]+=e1[i]/10;

e1[i]=e1[i]%10;

}

}

int ee=0;

for(int i=N-1; i>=0; i--)

{

if(e1[i]!=0)

{

for(int j=i; j>=0; j--)

a[x][ee++]=e1[j]+'0';

break;

}

}

a[x][ee]='\0';

}

int main()

{

strcpy(a[0],"1");

strcpy(a[1],"1");

strcpy(a[2],"3");

for(int i=3; i<=250; i++)

{

sum(i,a[i-1],a[i-2]);

}

int n;

while(cin>>n)

{

cout<

}

return 0;

}

JAVA 就比较简单了。。。

import java.util.*;

import java.math.*;

public class Main {

public static void main(String[] args) {

BigInteger []a=new BigInteger [311];

a[0]=BigInteger.valueOf(1);

a[1]=BigInteger.valueOf(1);

a[2]=BigInteger.valueOf(3);

for(int i=3;i<301;i++){

a[i]=a[i-1].add(a[i-2].add(a[i-2]));

}

Scanner cin=new Scanner(System.in);

while(cin.hasNextInt()){

int n=cin.nextInt();

System.out.println(a[n]);

}

cin.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值