05 2013 档案
摘要:解题报告:求前50项斐波那契数,这个就不用说了吧,直接看代码: 1 #include<cstdio> 2 __int64 f[55]; 3 void dabiao() { 4 f[0]=0,f[1]=1; 5 for(int i=2;i<=50;++i) 6 f[i]=f[i-1]+f[i-2]; 7 } 8 int main() { 9 int n;10 dabiao();11 while(scanf("%d",&n)&&n!=-1)12 printf("%I64d\n",f[n]);13 return 0;1
阅读全文
摘要:解题报告:题目大意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2073首先要说的是同在一条直线上的所有的点(x,y)的x+y都相等,并且这个和表示这个点在第几条直线上,所以我们可以先求出从原点到所有的直线的第一个点的距离,先打一个表,然后到点(x,...
阅读全文
摘要:解题报告:题目大意:在一个棋盘上,从坐标为(1,1)的点走到坐标为(n,n)的点并且不经过这两点之间的对角线,问一共有多少种走法。定义一个二维数组map[40][40],点map[i][j]的值为从(1,1)点走到这个点有多少种走法,而点(i,j) 可以由坐标为(i-1,j)和坐标为(i,j-1)这两个点走过来,所以走到(i,j)点的走法就有map[i-1][j]+map[i][j-1]种。另外要注意的是数据要用__int64,而且要初始化。 1 #include<cstdio> 2 #include<cstring> 3 __int64 map[40][40]; 4
阅读全文
摘要:解题报告:题目大意这里就不说了,这里给出题目链接,http://acm.hdu.edu.cn/showproblem.php?pid=2064。这题首先我们应该知道的是如何将N个圆盘从第一杆全部搬到第二根杆跟全部搬到第三根杆和从第二根杆全部搬到第三根杆需要的次数是一样的,然后搬N根杆的次数就可以有搬N-1根杆的次数得到,这里首先给出地推公式,dp[n]=3*dp[n-1]+2;思想就是假设现在要将N个圆盘搬到第三根杆,现在首先要做的是把N-1根杆全部搬到第三根杆,这样一共需要dp[n-1]次,然后第一根杆上面还剩下一个圆盘,现在我们要把这最后一个圆盘放到第二根杆上面,原因待会再解释,然后现在要
阅读全文
摘要:解题报告:题目大意:有N个人和N个名字,要将他们一一对应,对应的规则是至少要有N/2是对了的,求这样一共有多少种对应的方法。错排题,从0开始枚举到N/2,即表示有0个人的名字与人对应是错的、1个人的名字与本人的对应是错的、两个人的名字与本人的对应是错的、、、2、、、、,这里用一个组合就可以了,要注意...
阅读全文
摘要:解题报告:两个十六进制的数的加法,十六进制的数可以直接输入和输出,但仅限于非负数,输入输出的格式控制符是%X,但这题数据范围较大,要用到__int64,所以格式控制符应该用%I64X,另外当结果为负数时处理一下就可以了。 1 #include<cstdio> 2 int main() { 3 char str1[1000],str2[1000]; 4 __int64 A,B,sum; 5 while(scanf("%I64X%I64X",&A,&B)!=EOF) { 6 A+=B; 7 if(A<0) { 8 ...
阅读全文
摘要:解题报告:题目大意:在一座城市,一共有N家店,其中有一家苹果店和一家耐克店,现在要在这些店之间线路,要使所有的店都联通,并规定苹果店和耐克店之间必须有一条直接的线路,求要修建的路的总长度最小是多少?最小生成树题,感觉这题用普莱姆算法比较好,先把苹果店和耐克店初始化到一个集合里面去,接下来就是纯最小生...
阅读全文
摘要:解题报告:题目大意:现有两个人在下中国象棋,给出一种局面,问谁的攻击力更大,通过判断双方持有的子的总的分数加起来,看谁的分数更大,每个棋子有一个对应的分数。模拟题,要注意的是题目中有说明,炮和马是绝配,当哪一方一个马都没有或者一个炮或者两种都没有的 话,那么它的攻击力要减少1。 1 #include<cstdio> 2 #include<cmath> 3 int score[8]={16,7,8,1,1,2,3}; 4 int main() { 5 int T,n,score1,score2; 6 char ch[5]; 7 scanf("%d",&
阅读全文
摘要:解题报告:题目大意:有一个可以产生从0到mod-1的范围的随机数的公式是seed(x+1) = [seed(x) + STEP] % MOD,seed(1)=0,利用这个公式产生的随机数可能有mod-1个不同的,也可能少于这么多,给定一个STEP和一个MOD,若对于这一对你数,可以产生mod-1个不同的随机数,则称这个是一个Good Choice否则为Bad Chioce,还有就是注意一下输出的格式。模拟题,定义一个数组,标记产生的这个随机数是不是已经产生过了,若这个随机数是已经产生过的,那么接下来就会进入一个周期,这样的话随机数就达不到mod-1个了。 1 #include<cstdi
阅读全文
摘要:解题报告:题目大意:给定一个正整数N,求这个数的“根”,这里的根指的是:若N是个位数,则它的根就是N,若N是两位或两位以上的数,则的它的根就等于N的各位的和,若它的各位的和任然是两位或两位以上,则再求这个和的各位的和,直到这个各位的和是一个个位数。就是N的根。模拟题,但要注意的是这个N的范围很大,要用数组模拟。 1 #include<cstdio> 2 #include<cstring> 3 int main() { 4 int N,ans=0; 5 char str[1000]; 6 while(scanf("%s",str)) { 7 if(st
阅读全文
摘要:解题报告:题目大意:给定一个有N层的数塔,数塔的第i层有i个数,从数塔的第一层出发,每次只能经过相邻的两条路,求走到最底层时走过的那条路线上的数的和最大是多少?典型的动态规划,一看到这题,毫不犹豫的用了递归写,测试也过了,但交上去就WA了,才知道,递归调用函数是很花时间的,后来改成直接用for循环,46s就过了。递归的公式是map[i][j]+=(map[i+1][j]>map[i+1][j+1]? map[i+1][j]:map[i+1][j+1]);就是说当我现在在第i层的第j个数的时候,这个位置可以由第i+1层第j个或者第i+1层第j+1个得到,这就比较一下,这两种走法,哪种走法的
阅读全文
摘要:解题报告:题目大意:给出一个时间,求出这个时间的时候时针和分针的夹角是多少?这题要注意的是时是24小时制,而且时间是连续的,所以数据应该定义成double型。然后算出时针与0点位置的夹角,和分针与0分位置的夹角,公式是sum1=(h+m/60+s/3600)*30;sum2=(m+s/60)*6;sum1表示时针与0点的夹角,sum2表示分针与0分位置的夹角。这样一相减,同时这里又要注意,相减之后要取整。而不是用自动的四舍五入,我一开始就是没有取整,所以一直WA。 1 #include<cstdio> 2 #include<cmath> 3 int main() { 4
阅读全文
摘要:解题报告:题目大意:WANGPENG有N件上衣,M件裤子,K双鞋子,且都是不同的,现在输入一些搭配,“clothes x pants y” or “pants y shoes z”.,第一句表示第x件上衣跟第y件裤子搭配是不合理的,第二句表示第y件裤子与第z双鞋子搭配是不合理的,问一共有多少种合理的搭配方法。排列组合题,应该以裤子为中心,以为它跟上衣和鞋子都有关系,分别标记裤子不能和那些上衣和鞋子搭配。 1 #include<cstdio> 2 #include<cstring> 3 int cloths[1005],shoes[1005]; 4 int main()
阅读全文
摘要:解题报告:题目大意:一个人在医院体检,体检有很多项目,也有很多人在等待,现在已知若现在参加第i个项目的体检需要ai秒,并且每过1秒钟参加这个项目需要的时间就增加bi,问这个人最快完成体检需要多久。这题可以看成是一道DP题,首先需要对所有的项目进行排一个序,表示先后进行哪些项目的体检。排序按照ai*b...
阅读全文
摘要:解题报告:题目大意:虽然这题题目没有看懂,但是从测试数据就可以看出这题真的 狠水,求N个数的平方和. 1 #include<cstdio> 2 int main() { 3 int N,sum; 4 while(scanf("%d",&N)&&N!=0) { 5 int d; 6 sum=0; 7 while(N--) { 8 scanf("%d",&d); 9 sum+=d*d;10 }11 printf("%d\n",sum);12 }13...
阅读全文
摘要:解题报告:题目大意:输入两个数n和m,要求按一下步骤做,首先将n转化成m进制的数,然后求这个数的每一位的平方和。最后转化成m进制再显示出来。模拟题,要注意的一点是这个m的范围是2到16,所以当m超过10时要记得转化为对应的字母表示。 1 #include<cstdio> 2 #include<cmath> 3 typedef __int64 ll; 4 ll n,m; 5 char an[17]={'0','1','2','3','4','5','6',
阅读全文
摘要:解题报告:题目大意:A和B两个人在一片森林里举行一场打猎比赛,他们的目标的只有两种动物,一只老虎和一只狼,规定杀死老虎的得分是X,杀死狼的得分是Y。若两个人同时在追杀一种动物,则A赢的概率为P,B赢的概率为1-P,并且现在A已知B首先选择老虎的概率为Q,选择狼的概率为1-Q,若他们一开始选择的是不同...
阅读全文
摘要:解题报告:题目大意:输入两个数,判断这两个数是否相等,相等的话输出YES,不相等的话输出NO。这题强烈建议不要浪费时间,太TM坑了,有些东西考虑了反而是错的,害的我搞了很久,还以为什么东西没考虑,原来考虑的东西越多就错的越离谱。首先要说明的是这里可能会是很大的数,直接定义int或__int64是不行的,必须要用数组模拟,考虑到小数点后六位。这里给几个测试数据和答案:00 0NO0.0000 0YES0.00 0.000YES+0 0NO-0 0NO-0 +0NO0 0YES 1 #include<cstdio> 2 #include<cstring> 3 char st
阅读全文
摘要:解题报告:题目大意:输入一个数,表示要将这么多的钱换成面值为50、25、10、5、1的钱,问一共有多少种换法。虽然说这题是水题,但我一开始没有注意题目竟然说了所有钱币的总数不超过100个,所以一直不是TLE就WA,而看了discuss之后才发现原来还有这个要求。这就好做多了,可以直接用暴力,就是枚举每种钱币有0到n除以相应的面值的个数。但我觉得这题可以用dfs做,那在时间上会更快,但我没写出来。 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int main() { 5 int coin
阅读全文
摘要:解题报告:题目大意:给出一个多边形的各个定点的直角坐标,求出这个多边形的面积,给各个定点坐标时是按照逆时针顺序给出的。这题麻烦的地方就是给出的多边形可以的凹的,如果不是这样就可以拆成多个三角形的面积的和,我一开始就是这样错了。然后我听说线性代数里面有一个叫叉乘的方法可以求多边形的面积的方法,虽然我不能证明为什么这样可以,但这样的确太简单了,最后我还是用了,叉乘就是利用把相邻的两个点的坐标进行叉乘,叉乘也就是求它们的向量积,然后把它们都加起来就可以了,最后要注意一点的是最后一点要跟第一个点叉乘一次,因为是相邻的点都要叉乘一次。 1 #include<cstdio> 2 3 int d
阅读全文
摘要:解题报告:题目大意:f[1]=f[2]=1;f[n]=(A*f[n-1]+B*f[n-2])%7建议还没有做这道题的人就不要花时间了,这题纯属一道坑爹的题,测试数据很多问题,并且已经有大神证明过这道题在逻辑上就有错误,但是这里还是说一下解题思路。这道题数据量较大,有如果把1到n都算出来的话显然会TLE,所以得避开这个,我们可以发现f[n]的结果会呈现一个周期,所以我们只要算出一个周期内的f[n]就可以了,至于周期是多少这里就不说了。。。。 1 #include<cstdio> 2 int a[100005]; 3 int main() { 4 int A,B,N; 5 a[1]..
阅读全文
摘要:解题报告:题目大意:给出一个整数y,和一个字母x,若字母x为大写,则f(x) = x-'A',若字母x为小写,则f(x)= 'a'-x,问题是输出f(x)+y的值。水题,作一次判断就可以了。 1 #include<cstdio> 2 int main() { 3 int T,y; 4 char x[5]; 5 scanf("%d",&T); 6 while(T--) { 7 scanf("%s%d",x,&y); 8 if(x[0]>='A'&&x[0]&l
阅读全文
摘要:解题报告:题目大意:有n盏灯排成一行,一开始他们的状态都是熄灭的,现在输入一个N,表示要进行n此操作,第i此操作时要改变第i的倍数盏灯的状态,即熄灭的变亮,亮的变熄灭,问操作完之后第n盏灯的状态是什么,亮的就输出1,是暗的就输出0。简单题,因为本题没有时间上的限制,所以输入一个n,可以直接用一个数组表示当前的每个灯的状态,没做一次操作就将每个灯的状态改变一次,最后直接查询即可。 1 #include<cstdio> 2 #include<cstring> 3 int A[100000+5]; 4 int main() { 5 int n; 6 while(scanf(&
阅读全文
摘要:解题报告:大意:一只老鼠有M磅的猫粮,另外有一只猫控制了老鼠的N个房间,这些房间里面放了老鼠爱吃的绿豆,给出每个房间的绿豆数量,和这个房间的绿豆所需要的猫粮数,现在要求老鼠用这M磅的猫粮最多能换到多少它爱吃的绿豆?贪心题,由于所有的绿豆都是一样的,所以如果老鼠想要换到最多的绿豆,便可以换猫控制的房间...
阅读全文
摘要:解题报告:题目大意:有若干的节目,现在知道节目开始的时间和结束的时间,问题是求最多可以看多少个完整的节目。贪心题,想要在固定的时间内看尽量多的节目就必须保证看每个节目的时候都要尽可能快的结束当前这个节目,以便尽快看下一个节目。具体贪心的思想就是首先将所有的节目按照结束的时间从早到晚排一次序,然后定义...
阅读全文
摘要:解题报告:题目大意:五虎棋是一种棋,规则这里就不说了,现在给出一种一种棋盘的局面图,问题是分别求出两方所得到的分数。模拟题,我是直接暴力将每种情况都枚举出来,先定义一个map[][]数组,将棋盘局面存起来,然后对每一种可以得分的方案进行判断,因为数据量不大,一共就25个点。代码可能会有点长。。。。。View Code 1 #include<stdio.h> 2 #include<string.h> 3 char map[6][6]; 4 int bigtiger(char ch) { 5 if(map[1][1]==ch&&map[1][5]==ch&a
阅读全文
摘要:解题报告:题目大意:现有一个十进制的数n,问n的二进制表示应该是多少。简单题,直接暴力的方法,输入一个n ,每次n--,同时保存结果的数组第一位加一,然后再暴力判断是否要进位。最后将储存结果的那个数组倒着输出就是了。View Code 1 #include<stdio.h> 2 #include<string.h> 3 int main() { 4 int n,ans[55]; 5 while(scanf("%d",&n)!=EOF) { 6 memset(ans,0,sizeof(ans)); 7 while(n--) { 8 ...
阅读全文
摘要:解题报告:题目大意:用n条折线最多可以将平面分成多少个部分。动态规划,当把第n条折线添加到拥有n-1条折线的图里面时,为了尽可能多的分割平面,所以这条折线要与原有的n-1条折线都有交点,交点总数就是2*(n-1),交叉之后总的线段数为4*(n-1),和两条射线,所以得到新增加的区域数目就是4*(n-1)+1,其中4*(n-1)是通过线段增加的区域,而1是通过两条射线增加的区域数目。得到递推公式就是DP[n]=DP[n-1]+4*(n-1)+1。View Code 1 #include<stdio.h> 2 __int64 DP[10000+5]; 3 void dabiao(voi
阅读全文
摘要:解题报告:题目大意:现有一个蜜蜂房如右图所示,每一个蜜蜂房都有编号,现在一只蜜蜂要从a号蜜房爬到b号蜜蜂房,问一共有多少条不同的路线。又是一道动态规划题,由于整个蜂房是按照一定的周期排列的,所以我们可以不管a和b到底是多少,只要知道b-a的值就可以了,为了方便,令n=b-a,即要求蜜蜂从1号蜂房走到n号蜂房一共有多少种不同的路线,我们可以将1到n转化为1到n-1和1到n-2的子问题来求出我们所要的解,可以理解为当现在要从一号房爬到n号房,可以假设蜜蜂现在在n-1号房,那么蜜蜂从n-1号房爬到n号房可以有一种走法,另一种是假设蜜蜂现在就在n-2号房,那么从n-2号房走到n号房也是只有一种走法所以
阅读全文
摘要:解题报告:题目大意:给你一个n,表示有n个排成一条直线的方格,现在有红、粉、绿三种颜色,用着三种颜色将这个n个方格涂满,涂色的规则是相邻的两个方格的颜色不能相同,并且最后一格跟第一格的颜色不能相同,要求一共有多少涂色的方法。也是一道动态规划题,若现在要求有n个方格时有多少种涂色方法,可以把它化为两个子问题来 求解,第一,当第n-1个方格涂的颜色与第一格的颜色相同时,而第n-1格的颜色与第一格颜色相同的情况可以由n-2格的结果得到,因为当有n-2个方格的情况的时候,要求的就是最后一格不能与第一格的颜色相同,于是就可以看成是将n-2的情况直接在后面加上一种与第一格相同的颜色,就得到了当第n-1格的
阅读全文
摘要:解题报告:题目大意:给你一个n ,表示有2*n规格的方格,现在又若干个1*2规格的骨牌,要用骨牌将2*n 规格的方格铺满,问有多少种铺法。动态规划题,要求有n格时铺的方法种数,就可以通过有n-1跟n-2个方格的结果来递推出来,思想就是当要求有n个方格时铺的方法种数就可以理解为在n-1格的情况下,多了一个格,那么着多出的一个就可以直接将一块骨牌竖直放好就可以填满了,然而还要加上有将两块骨牌横着放的情况,这时就需要有两个空的方格,于是我们可以由n-2个方格的情况递推过来,也就是加上一个n-2的情况,可以定义一个数组DP【55】,首先将数组DP初始化为DP[1]=1;DP[2]=2;DP[3]=3;
阅读全文
摘要:解题报告:题目大意:现要跨上一个结束为M 的台阶,每次可以选择一次跨一级台阶或者一次跨上两级台阶,问跨上这个M级的台阶有多少种跨法。最简单的动态规划题,假设我现在在第n级台阶上,要跨上级数为M的台阶可以将问题转化为要从第n 级台阶一步跨只跨一级台阶跨到n+1级台阶上,也可以选着一次一步跨两级台阶直接跨到n+2级台阶上,所以从第n级台阶跨上M级台阶的方法种数就是从第n级台阶一步跨一级跟一步跨两级的和就为从第n级台阶跨上M级台阶的方法种数。View Code 1 #include<stdio.h> 2 int DP[45]; 3 void dabiao(void) { 4 DP[1]=
阅读全文
摘要:Problem DescriptionIgnatius was born in a leap year, so he want to know when he could hold his birthday party. Can you tell him? Given a positive integers Y which indicate the start year, and a positive integer N, your task is to tell the Nth leap year from year Y. Note: if year Y is a leap year, th
阅读全文
摘要:Problem DescriptionACboy has N courses this term, and he plans to spend at most M days on study.Of course,the profit he will gain from different course depending on the days he spend on it.How to arrange the M days for the N courses to maximize the profit?InputThe input consists of multiple data set
阅读全文
摘要:Description有N个顶点,每个顶点有一个权值,初始值皆为0。接下来有M次操作,操作内容为 [a,b) or [b,a),将区间内顶点i 权值置为1,求最后顶点权值为0的数量。Input多组测试数据。第一行为两个整数n, m,n(1<=n<=20000)表示顶点, m(1<=m<=50000)表示操作次数。接下来包含m行,每行包含两个正整数 a,b属于区间[1,n] ,意义如上所述。Output每组测试输出一行,包含一个整数,表示顶点值为0的数量。Sample Input3 11 23 11 3Sample Output21解题思路: 一看到这题可能就会容易想到应
阅读全文
摘要:Problem Description参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。(当然,大家都知道集合的定义,就是同一个集合中不会有两个相同的元素,这里还是提醒大家一下) 呵呵,很简单吧?Input每组输入数据占1行,每行数据的开始是2个整数n(0<=n<=100)和m(0<=m<=100),分别表示集合A和集合B的元素个数,然后紧跟着n+m个元素,前面n个元素属于集合A,其余的属于集合B. 每个元素为不超出int范围的整数,元素之间有一个空格隔开
阅读全文
摘要:Problem Description假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。Input输入数据有多个测试实例,每个测试实例的第一行包括两个整数n和m,分别表示学生数和课程数。然后是n行数据,每行包括m个整数(即:考试分数)。Output对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数;第二行包含m个数据,表示m门课的平均成绩,结果保留两位小数;第三行是一个整数,表示该班级中各科成绩均大于等于平均成绩的学生数量。 每个测试实例后面跟一
阅读全文
摘要:Problem Description求A^B的最后三位数表示的整数。 说明:A^B的含义是“A的B次方”Input输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。Output对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。Sample Input2 3 12 6 6789 10000 0 0Sample Output8 984 1View Code 1 #include<stdio.h> 2 int A,B; 3 int main() { 4 wh
阅读全文
摘要:Problem DescriptionAs we know, Big Number is always troublesome. But it's really important in our ACM. And today, your task is to write a program to calculate A mod B. To make the problem easier, I promise that B will be smaller than 100000. Is it too hard? No, I work it out in 10 minutes, and m
阅读全文
摘要:Problem Description把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。Input每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。Output每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。Sample InputX 2 A 7 @Sample OutputX XXX A A A A A A
阅读全文
摘要:Problem DescriptionGive you the width and height of the rectangle,darw it.InputInput contains a number of test cases.For each case ,there are two numbers n and m (0 < n,m < 75)indicate the width and height of the rectangle.Iuput ends of EOF.OutputFor each case,you should draw a rectangle with
阅读全文
摘要:Problem Description作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵 但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢? 这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。Input输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示老师的人数,然后是n个老师的工资。 n=0表示输入的结束,不做处理。Outp
阅读全文
摘要:解题报告:题目大意:现有E、O、F三个字符,给出一个n,n表示有n个位置,这个n个位置都要摆放这三个字符里面的其中的一个字符,摆放的要求是任意两个相邻的位置不能同时出现两个O,问一共有多少种摆法。此题一看就是一道典型的DP题,假设现在给定了一个n,要求n个位置有多少种摆法则可以通过n-1和n-2来得到,具体的方法是先定义的数组DP[45],还是先给出递推公式吧,DP[n]=DP[n-1]*2+DP[n-2]*2,这里分为两个部分,第一个部分表示若第n个位置只放E和F这两种情况的时候,可以直接用n-1个位置的摆放方法直接乘以二便得到当n位置只放E和F的情况数,接下来就要加上当n位置放O时的情况种
阅读全文
摘要:解题报告: 题目大意是输入一个数n,然后输入n个整数,求这n个整数的最小公倍数。此题可以用GCD,即最大公约数,从输入的第一个输入开始,将结果保存,每输入一个整数就将其乘以保存的结果,然后除以保存的结果跟输入的这个输入的最大公约数。附上17行代码。View Code 1 #include 2 in...
阅读全文
摘要:题目大意:给出一段数组,然后让你求出最大的子串和,并记录这个最大的子串和的开始位置和结束的位置。解题报告:动态规划题,用最大子串和。即假设现在要求的是数组a[]的最大子串和,先定义一个f[]数组,首先将f[]数组初始化,判断a[1]是否大于0,若大于等于0,则f[1]=a[1],若a[1]<=0,则f[1]=0,接下来用递归了,递归方程为f[i]=(f[i-1]+a[i])>0? f[i-1]+a[i]:0,递归完了之后再求出f[]数组里面的最大值,就是要求的最大子串和。然后就是求最大子串和的位置的问题,这个只要当判断到了a[i]小于0的时候就把当前的串的位置记录在另一个结构体里面
阅读全文

浙公网安备 33010602011771号