int main() { int i,n; int a[55];
while(scanf("%d",&n)&&n) { for(i=0;i<4;i++) { a[i]=i; } for(i=4;i<=n;i++) a[i]=a[i-1]+a[i-3]; printf("%d\n",a[n]); } return 0;
}
数组比递归快。
import java.util.ArrayList; import java.util.List; import java.util.Scanner;
public class Main {
public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()) { int year = sc.nextInt(); if(year == 0) return; System.out.println(func(year)); } } public static int func(int year) { List<Integer> list = new ArrayList<>(); int num = 0; for(int i = 1; i <= year; i++) { if(i >= 5) { num += list.get(i-4); } else { num++; } list.add(num); } return list.get(list.size()-1); }
int a[maxn];
void init(){ for(int i=0;i<5;i++) a[i]=i; for(int i=5;i<55;i++) a[i]=a[i-1]+a[i-3]; }
int main(int argc, const char * argv[]) { int n; init(); while(scanf(“%d”,&n)&&n){ printf(“%d\n”,a[n]); } return 0; }
include
int main()
{
int i,n;
int a[55];
}
数组比递归快。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
}
int a[maxn];
void init(){
for(int i=0;i<5;i++)
a[i]=i;
for(int i=5;i<55;i++)
a[i]=a[i-1]+a[i-3];
}
int main(int argc, const char * argv[]) {
int n;
init();
while(scanf(“%d”,&n)&&n){
printf(“%d\n”,a[n]);
}
return 0;
}