依然是DP水题,直接贴代码,这貌似是我做题以来代码最短的一次了。 #include <iostream> using namespace std; int count[46][2];//count[i][0]表示第i个数是0,count[i][1]表示第i个数是1 int main() { count[1][0]=count[1][1]=1; for(int i=2;i<=45;i++) { count[i][0]=count[i-1][0]+count[i-1][1]; count[i][1]=count[i-1][0]; } int i,temp; scanf("%d",&i); for(int k=1;k<=i;k++) { scanf("%d",&temp); printf("Scenario #%d:/n%d/n/n",k,count[temp][0]+count[temp][1]); } return 0; }