Description
Integer 4 can be expressed as a sum of 1s, 2s, and 3s in seven different ways as follows:
Write a program that determines the number of ways in which a given integer can be expressed as a sum of 1s, 2s, and 3s. You may assume that the integer is positive and less than 20.
Input
The input consists of T test cases. The number of test cases (T ) is given in the first line of the input file. Each test case consists of an integer written in a single line.
Output
Print exactly one line for each test case. The line should contain an integer representing the number of ways.
Sample Input
3 4 7 10
Sample Output
7 44 274
KEY:这个题我一开始以为要什么算法呢……后来写了几项发现原来有规律……f[i]=f[i-1]+f[i-2]+f[i-3];
Source:
#include < iostream >
using namespace std;
int f[ 25 ] = ... {1,1,2} ;
void GetList()
... {
for(int i=3;i<25;i++)
f[i]=f[i-1]+f[i-2]+f[i-3];
}
int main()
... {
GetList();
int N;
int n;
cin>>N;
for(int i=1;i<=N;i++)
...{
cin>>n;
cout<<f[n]<<endl;
}
return 0;
}
#include < iostream >
using namespace std;
int f[ 25 ] = ... {1,1,2} ;
void GetList()
... {
for(int i=3;i<25;i++)
f[i]=f[i-1]+f[i-2]+f[i-3];
}
int main()
... {
GetList();
int N;
int n;
cin>>N;
for(int i=1;i<=N;i++)
...{
cin>>n;
cout<<f[n]<<endl;
}
return 0;
}