输入只有1行,即整数N。
可能有多组测试数据,对于每组数据, 输出只有1行,即名名吃巧克力的方案数。
4
5
直接暴力dfs穷举
using namespace std;
int N, solution;
void dfs(int rem, int eat){
if(rem < eat){
return;
}
if(rem == eat){
solution++;
return;
}
dfs(rem - eat, 1);
dfs(rem - eat, 2);
}
int main(){
while(cin >> N){
solution = 0;
dfs(N, 0);
cout << solution << endl;
}
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] record =new int[21];
record[1]=1;
record[2]=2;
for (int i = 3; i <= n; i++) {
record[i]=record[i-1]+record[i-2];
}
System.out.println(record[n]);
}
}
#include <cstdio>
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int manage(int k){
if(k == 1)
return 1;
else if(k == 2)
return 2;
return manage(k-1)+manage(k-2);
}
int main(){
int k;
cin>>k;
int sum;
sum = manage(k);
cout<<sum;
return 0;
}
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int* candy=new int[n+1];
candy[1]=1;
candy[2]=2;
for(int i=3;i<=n;i++)
candy[i]=candy[i-1]+candy[i-2];
cout<<candy[n]<<endl;
} #include<iostream>
using namespace std;
int function(int n)
{
if(n == 0)//终止条件一
return 1;
else if(n < 0)//终止条件二
return 0;
else
return function(n - 2) + function(n - 1);//每天只有吃一块或者两块这两种方法
}
int main()
{
int n;
int cnt;
cin >> n;
cnt = function(n);
cout << cnt << endl;
return 0;
}
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn = 21;
int num[maxn];
int main()
{
num[1] = 1;
num[2] = 2;
for(int i = 3; i < maxn; ++i)
{
num[i] = num[i-1]+num[i-2];
}
int n;
while(cin >> n)
{
cout << num[n] << endl;
}
return 0;
}
#include<stdio.h>
int select(int a,int b){
if(b==0){
return 1;
}
int result,temp1=1,temp2=1;
int i;
for(i = a; i > a-b; i--){
temp1 *= i;
}
for(i = b; i>0; i--){
temp2 *= i;
}
result = temp1/temp2;
return result;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int b[20] = {0};
if(n%2==0){
for(int i = n/2; i <= n; i++){
b[i] = select(i, n-i);
}
}else{
for(int i = n/2+1; i<=n; i++){
b[i] = select(i, n-i);
}
}
int sum = 0;
for(int i = 0; i <= n; i++){
sum += b[i];
}
printf("%d\n", sum);
}
return 0;
} //最简递归
#include <stdio.h>
int fun(int n){
if(n==1)return 1;
if(n==2)return 2;
return fun(n-1)+fun(n-2);
}
int main() {
int n,sum;
while (scanf("%d", &n) != EOF) {
sum=fun(n);
printf("%d",sum);
}
return 0;
}