递推

巡山小妖精
902次浏览
2021年02月07日 00:05
最佳经验
本文由作者推荐

电脑故障声音-

2021年2月7日发(作者:杨柳枝)


折线分割平面



Time Limit: 1000MS Memory limit: 32768K


题目描述



我们看到过很多直线分割平 面的题目,今天的这个题目稍微有些变化,我们要求的是


n


条折 线分割平面的


最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平 面分成


7


部分,具体如下所


示。




输入



输入数据的第一行是一个整数


C,


表示测试实例 的个数,然后是


C


行数据,每行包含一个整数


n(0<


n<=10000),


表示折线的数量。



输出



对于每个测试实例,请输出平面 的最大分割数,每个实例的输出占一行。



示例输入



2


1


2


示例输出



2


7




#include


void main()


{






int n,i,a,j;



long long f[10000];



scanf(



for(i=1;i<=n;i++)



{




scanf(







f[1]=2;







f[2]=7;







for(j=3;j<=a;j++)




{










f[j]=f[j-1]+4*j-3;




}







printf(



}


}




养兔子



Time Limit: 1000MS Memory limit: 65536K


题目描述



一对成熟的兔子每天能且只 能产下一对小兔子,每次都生一公一母,每只小兔子的成熟期是一天。某人领


养了一对小 兔子,一公一母,请问第


N


天以后,他将会得到多少对兔子。< /p>



输入



测试数 据包括多组,每组一行,为整数


n(1


≤


n


≤


90)


。



输入以


0


结束。

< br>


输出



对应输出第

< p>
n


天有几对兔子


(


假设没 有兔子死亡现象,而且是一夫一妻制


)


。



示例输入



1


2


0


示例输出



1


2




#include


void main()


{






int n,i;



long long f[90];



while(~scanf(



{




f[1]=1;




f[2]=2;







for(i=3;i<=n;i++)




{








f[i]=f[i-1]+f[i-2];




}




printf(



}


}




王小二切饼



Time Limit: 1000MS Memory limit: 65536K


题目描述



王小二自夸刀工不错,有人 放一张大的煎饼在砧板上,问他:


“饼不许离开砧板,切


n(1 <=n<=100)


刀最


多能分成多少块?”

< br>


输入



输入切的刀数


n


。



输出



输出为切


n


刀最多切的饼的块数。



示例输入



100


示例输出



5051




#include


void main()


{






int n,i;



double f[101];



scanf(



f[1]=2;



for(i=2;i<=n;i++)



{






f[i]=f[i-1]+i;



}



printf(




}




马拦过河卒



Time Limit: 3000MS Memory limit: 65536K


题目描述



棋盘上

A


点有一个过河卒,需要走到目标


B


点。卒行走的规则:可以向下、或者向右。同时在棋盘上


C


点


有一个对方的马,


该马所在的点和所有跳跃一步可达的点称为对 方马的控制点。


因此称之为


“马拦过河卒”

。


棋盘用坐标表示,


A


点(


0


,


0


)、


B


点(


n


,

< p>
m


)(


n


,


m


为不超过


15


的整数), 同样马的位置坐标是需


要给出的。现在要求你计算出卒从


A


点能够到达


B


点的路径的条数,假设马的位 置是固定不动的,并不是


卒走一步马走一步。



输入



一行四个数据,用空格分隔,分 别表示


B


点的坐标和马的坐标。



输出



一个数据,表示所有的路径条数。



示例输入



6 6 3 3


示例输出



6




#include


void main()


{






int x[9]={0,-2,-1,1,2,2,1,-1,-2};



int y[9]={0,1,2,2,1,-1,-2,-2,-1};



int bx,by,mx,my,i,j;



long long f[15][15]={0},g[15][15]={0};



scanf(



g[mx][my]=1;



for(i=1;i<=8;i++)







if((mx+x[i]>=0)&&(mx+x[i]<=bx)&&(my+y[i]> =0)&&(my+y[i]<=by))





g[mx+x[i]][my+y[i]]=1;



for(i=1;i<=bx;i++)







if(g[i][0]!=1)





f[i][0]=1;







else for(i;i<=bx;i++)





f[i][0]=0;



for(j=1;j<=by;j++)







if(g[0][j]!=1)





f[0][j]=1;







else for(j;j<=by;j++)





f[0][j]=0;



for(i=1;i<=bx;i++)




for(j=1;j<=by;j++)





if(g[i][j]==1)






f[i][j]=0;





else f[i][j]=f[i-1][j]+f[i][j-1];



printf(



}




们



Time Limit: 1000MS Memory limit: 65536K


题目描述



对于斐波那契数列想必各位已经见过了。这里给出一个加强版。



F[i] = i (i <= 3);


F[i] = F[i-1] + F[i-2] + F[i-3](i >= 4);


输入



多组输入。每组输入一个整数


n (1<= n && n <= 30)


。



输出



每组数据输出一个整数,代表< /p>


F[n]


。



示例输入



1


4


示例输出



1


6




#include


void main()


{






int n,i,f[30];



while(~scanf(



{







f[1]=1;







f[2]=2;







f[3]=3;







for(i=4;i<=n;i++)




{










f[i]=f[i-1]+f[i-2]+f[i-3];




}







printf(



}


}



电脑故障声音-


电脑故障声音-


电脑故障声音-


电脑故障声音-


电脑故障声音-


电脑故障声音-


电脑故障声音-


电脑故障声音-