首页 > ACM题库 > HDU-杭电 > hdu 2018 母牛的故事-动态规划-[解题报告]java
2013
12-26

hdu 2018 母牛的故事-动态规划-[解题报告]java

母牛的故事

问题描述 :

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

输入:

输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。

输出:

输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。

样例输入:

2
4
5
0

样例输出:

2
4
6

每头母牛到第四年生小牛,

f[i] = f[i-1] + f[i-3], i > 4

http://acm.hdu.edu.cn/showproblem.php?pid=2018

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import java.util.*;
import java.io.*;
import java.math.*;

public class Main {
    public static void main(String []args){
        Scanner cin = new Scanner(System.in);
        Integer N = 55,i,n;
        BigInteger[] fm = new BigInteger[N],fx = new BigInteger[N];
        for(i = 1; i < 5; ++i)
        	fm[i] = BigInteger.valueOf(i);
        for(; i < N; ++i)
        	fm[i] = fm[i-1].add(fm[i-3]);

       
       while(true){
           n = cin.nextInt();
           if(n == 0)
               break;
           System.out.println(fm[n]);
       }
    }
}

解题转自:http://blog.csdn.net/cscj2010/article/details/7625082


  1. #include <stdio.h>
    int main()
    {
    int n,p,t[100]={1};
    for(int i=1;i<100;i++)
    t =i;
    while(scanf("%d",&n)&&n!=0){
    if(n==1)
    printf("Printing order for 1 pages:nSheet 1, front: Blank, 1n");
    else {
    if(n%4) p=n/4+1;
    else p=n/4;
    int q=4*p;
    printf("Printing order for %d pages:n",n);
    for(int i=0;i<p;i++){
    printf("Sheet %d, front: ",i+1);
    if(q>n) {printf("Blank, %dn",t[2*i+1]);}
    else {printf("%d, %dn",q,t[2*i+1]);}
    q–;//打印表前
    printf("Sheet %d, back : ",i+1);
    if(q>n) {printf("%d, Blankn",t[2*i+2]);}
    else {printf("%d, %dn",t[2*i+2],q);}
    q–;//打印表后
    }
    }
    }
    return 0;
    }