测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A34257. 吃糖果2

填空题 中等

题目描述

吃糖果2

题目描述

现有n(50 > n > 0)个糖果,每天只能吃2个或者3个,请计算共有多少种不同的吃法吃完糖果。

输入

输入的每一行包括一组测试数据,即为糖果数n。最后一行为0,表示测试结束。

输出

每一行输出对应一行输入的结果,即为吃法的数目。

样例输入

1

2

3

4

12

0

样例输出

0

1

1

1

12

参考答案

// C++参考代码1 #include <bits/stdc++.h> using namespace std; int a[52] = {0, 0, 1, 1}; int f(int n) { if (n <= 3) return a[n]; if (a[n] > 0) return a[n]; a[n] = f(n - 2) + f(n - 3); return a[n]; } int main() { int n; while (true) { cin >> n; if (n == 0) break; cout << f(n) << endl; } return 0; }

答案解析

// C语言参考代码

#include <stdio.h>


int countWays(int n) {

    if (n == 0 || n == 1)

        return 0;

    else if (n == 2)

        return 1;

    else if (n == 3)

        return 1;

    else

        return countWays(n - 2) + countWays(n - 3);

}


int main() {

    int n;

while (scanf("%d", &n) == 1 && n != 0) {

        int ways = countWays(n);

        printf("%d\n", ways);

    }


    return 0;

}

上一题 下一题