首页 > 试题广场 >

吃糖果

[编程题]吃糖果
  • 热度指数:14976 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0)。 妈妈告诉名名每天可以吃一块或者两块巧克力。 假设名名每天都吃巧克力,问名名共有多少种不同的吃完巧克力的方案。 例如: 如果N=1,则名名第1天就吃掉它,共有1种方案; 如果N=2,则名名可以第1天吃1块,第2天吃1块,也可以第1天吃2块,共有2种方案; 如果N=3,则名名第1天可以吃1块,剩2块,也可以第1天吃2块剩1块,所以名名共有2+1=3种方案; 如果N=4,则名名可以第1天吃1块,剩3块,也可以第1天吃2块,剩2块,共有3+2=5种方案。 现在给定N,请你写程序求出名名吃巧克力的方案数目。

输入描述:
输入只有1行,即整数N。


输出描述:
可能有多组测试数据,对于每组数据,
输出只有1行,即名名吃巧克力的方案数。
示例1

输入

4

输出

5
#include <stdio.h>
# define N 20
int main() {
    int dp[N];
    int n;
    scanf("%d", &n);
    dp[1] = 1;
    dp[2] = 2;
    for (int i = 3; i <= n; i ++) {
        dp[i] = dp[i-1]+dp[i-2];
    }
    printf("%d", dp[n]);
    return 0;
}


发表于 2023-02-16 15:50:21 回复(0)
//ky48吃糖果
#include<stdio.h>
const int MAXN=20;
int dp[MAXN];
void DP(int n){
	dp[0]=0;
	dp[1]=1;
	dp[2]=2;
	for(int i=3;i<=n;i++){
		dp[i]=dp[i-2]+dp[i-1];
	}
}
int main(){
	int N;
	while(scanf("%d",&N)!=EOF){
		DP(N);
		printf("%d\n",dp[N]);
	}
}

发表于 2022-03-12 19:26:10 回复(0)
#include<stdio.h>

int fun(int n)
{
	if(n==0) return 1;
	else if(n<0) return 0;
	else return fun(n-1)+fun(n-2);
}

int main()
{
	int a;

	while(scanf("%d",&a)!=EOF)
		printf("%d\n",fun(a));
	
	return 0;
}

发表于 2022-03-12 16:52:36 回复(0)
#include<stdio.h>
int main (void){
    int n;
    while(scanf("%d",&n)!=EOF){
        printf("%d",ways(n));
    }
    return 0;
}

int ways(int a){
    if(a==1){
        return 1;
    }
    else if(a==2){
        return 2;
    }
    else{
        return ways(a-1)+ways(a-2);
    }
}

#include<stdio.h>
int main (void){
    int n;
    while(scanf("%d",&n)!=EOF){
        printf("%d",ways(n));
    }
    return 0;
}

int ways(int a){
    if(a==1){
        return 1;
    }
    else if(a==2){
        return 2;
    }
    else{
        return ways(a-1)+ways(a-2);
    }
}

发表于 2022-02-27 14:13:44 回复(0)
//分析可知规律等同于斐波那契数列

#include<stdio.h>
int main(){
    int i = 0,n,f1=1,f2=2,fabri;
    while(~scanf("%d",&n)){
        if(n==1){
            printf("1\n");
            break;
        }
         if(n==2){
            printf("2\n");
            break;
        }
        else 
        {
           for(i=n;i>2;i--){
               fabri=f1+f2;
               f1=f2;
               f2=fabri;
           }
            printf("%d\n",fabri);
        }
    }
}


发表于 2021-12-26 22:22:48 回复(0)