摘要: 题意:考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N。现在请在数列中插入“+”表示加,或者“-”表示减,“ ”表示空白(例如1-2 3就等于1-23),来将每一对数字组合在一起(请不要在第一个数字前插入符号)。计算该表达式的结果并判断其值是否为0。请你写一个程序找出所有产生和为零的长度为N的数列。分析:DFS枚举就好了关键就是 处理‘ ’,用last保存最近的一个连续的整数,不将该数进行运算,sum表示last之前的运算结果若当前选择了 ' ':sum=sum-last+last*10+s+1(last>0);sum=sum 阅读全文
posted @ 2011-11-13 16:28 枕边梦 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 嘿嘿,还是比较基本的母函数/* ID: nanke691 LANG: C++ TASK: money */ #include<iostream>#include<string>#include<fstream>#include<string.h>#include<algorithm>using namespace std;const int maxn = 10000;int p[30],V,n;long long num1[maxn+1],num[maxn+1];void sovle(){ memset(num,0,sizeof(nu 阅读全文
posted @ 2011-11-13 10:57 枕边梦 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 1.题意解释:意思是有n种彩票,你要想集齐这所有的n种,需要买多少张彩票2.如果有n种,那么我们要求的结果就是n/n + n/n-1 + n/n-2 +...+ n/2 + n/1 ,即n*(1/n + 1/n-1 +...+ 1/2 +1/1) 原理: 我们要集齐n种不同的彩票, 买第一张任意,概率为n/n,买第二张就需要和第一张不同,即剩下的n-1种里哪种都可以,成功的概率是n-1/n...如果我们已经集齐了n-1种,再买彩票我们希望买到最后一种,由于是均匀分布的,所以买到最后一种彩票的概率是1/n.那么从期望的角度来说我们需要买n张,才能买到(当然我们就算买n张也不一定就能买到,也可能买 阅读全文
posted @ 2011-11-13 10:22 枕边梦 阅读(690) 评论(0) 推荐(0) 编辑
摘要: 题意已经很清楚了,主要就是找递推式:sum[i]=sum[i-1]+2*sum[i-2];需要用到大数,不过这种普通的大数加法已经很熟了#include<iostream>#include<algorithm>using namespace std;int sum[1010][100],len[1010];void init(){ sum[0][0]=0;len[0]=0; sum[1][0]=0;len[1]=0; sum[2][0]=1;len[2]=0; for(int i=3;i<=1000;i++) { int k,j; k=0; for(j=0;j&l 阅读全文
posted @ 2011-11-13 02:12 枕边梦 阅读(268) 评论(0) 推荐(0) 编辑