杭电ACM第1249题,关于N个三角形能把平面分成几块的问题。
递推公式:
t(1)=2
t(n)=t(n-1)+6*(n-1)
杭电1249代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
long int a[10001];
a[1]=2;
int i;
for(i=2;i<=n;i++)
{
a[i]=a[i-1]+6*(i-1);
}
printf("%ld\n",a[n]);
}
return 0;
}
要巧妙的利用数组来解决一些简单的问题,有时比函数更好用很多。
#include<stdio.h>
#include<stdlib.h>
long f(long a)
{
if(a==1)
return 2;
else
return f(a-1)+6*(a-1);
}
int main()
{
int x;
long n;
scanf("%d",&x);
while(x--) {
scanf("%d",&n);
printf("%ld\n",f(n));
}
return 0;
}