随笔分类 - 递归
摘要:View Code 1 //1284钱币兑换问题 2 //用1分 2分 3分 3 #include<stdio.h> 4 int main() 5 { 6 int n,j; 7 __int64 sum; 8 while(scanf("%d",&n)!=-1) 9 { sum=0;10 for(j=0;j<=n/3;j++)11 sum+=(n-j*3)/2+1;12 printf("%I64d\n",sum);13 }14 return 0;15 }
阅读全文
摘要:View Code 1 //杭电2067 2 //catalan加泰罗尼亚数 3 #include<stdio.h> 4 #include<string.h> 5 6 int main() 7 { 8 int n,i,c,j; 9 __int64 f[40][40];10 memset(f,0,sizeof(f));11 f[0][0]=1;12 for(i=0;i<36;i++)13 for(j=0;j<=i;j++)14 {15 if(i==j&&j==0)16 ...
阅读全文
摘要:医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,被称为"红色病毒",经研究发现,该病毒及其变种的DNA的一条单链中,胞嘧啶,腺嘧啶均是成对出现的。 现在有一长度为N的字符串,满足一下条件: (1) 字符串仅由A,B,C,D四个字母组成; (2) A出现偶数次(也可以不出现); (3) C出现偶数次(也可以不出现); 计算满足条件的字符串个数. 当N=2时,所有满足条件的字符串有如下6个:BB,BD,DB,DD,AA,CC. 由于这个数据肯能非常庞大,你只要给出最后两位数字即可.View Code 1 //杭电2065 2 /
阅读全文
摘要:(1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域。 析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。 这样就会得到n-1个交点。这些交点将第n条直线分为2条射线和n-2条线断。而每条射线和线断将以有的区域一分为二。这样就多出了2+(n-2)个区域。 故:f(n)=f(n-1)+n =f(n-2)+(n-1)+n …… =f(1)+1+2+……+n =n(n+1)/2+1 (2)
阅读全文