发布网友 发布时间:21小时前
共0个回答
这样可以在O(n)时间内解决问题。下面是我的代码:// 起始点在什么情况下会被改变, 只有出现一个新的最大值时。include <stdio.h> int main(){ int i;int T, N;int count, temp;int max, start, end;int number, sum;scanf ("%d", &T);count = 1;while (T --){ scanf ("%d...
杭电1003max sum http://acm.hdu.edu.cn/showproblem.php?pid=1003这种题目让别人看代码是很痛苦的一件事,其实很少有人会帮你看代码的。。有时候人家自己的代码隔几天自己都看不懂了。。而且你的代码又没有注释什么的。。建议直接问别人算法怎么实现会比较好!!这是一个很经典的动规题目。。求最大子段和问题。用S[i]表示以i为结束点的最大子段和,那么S[i+...
题目地址 http://acm.hdu.edu.cn/showproblem.php?pid=1003 没多少分...sum 是当前已经加上num的值,但是小于0,那就说明前面这段是不可能作为最大段的前缀的(加上去越小了么)所以就把s置为此字符的下一个字符了(s就是可能的开始位置),看你之前的代码就没对sum<0考虑可能最大字段和怎么算还不是很清楚吧,先理解下那个比较好,我就不讲啦呵呵 水平有限 讲不...
求高手详细讲解http://acm.hdu.edu.cn/showproblem.php?pid=1003分为三段7 0 6 -1 为第一段n1,1 -6 为第二段n2,7 -5为第三段n3。然后把n1,n2,n3用同样的方式分段,如此迭代,从而大大简化了数据量。最后用排列组合的方式求出最大的Sum,起始点为段的起始点。代码有时间另附。
...http://acm.hdu.edu.cn/showproblem.php?pid=2023你这种做法是错的。flag=0;for(j=1;j<=m;j++){ if(score[i][j]>=aver2[j])flag=1;else break;} if(flag==1)s+=1;这段错误的。不是浮点问题,目前的oj浮点能直接比较相等的。问题就是你这种判断方法是只要一开始的第一个是大于平均值,之后不管是否大于平均值都认为是大于平均值的。
...1004http://acm.hdu.edu.cn/showproblem.php?pid=1004逻辑出错了。inital_num();要放到while(ballnum != 0)的前面,不能放在循环里。
杭电大 2023 http://acm.hdu.edu.cn/showproblem.php?pid=2023这是我的代码AC了你看看吧 include <stdio.h> include <string.h> int main(void){ int n, m;int i, j;int t, d;int s[50];int c[5];int sc[50][5];while (scanf("%d%d", &n, &m) != EOF){ memset(s, 0, sizeof(s));memset(c, 0, sizeof(c));memset(sc, 0,...
...网址http://acm.hdu.edu.cn/showproblem.php?pid=1037a数组下标最小值是0,最大下标是2。程序修改如下:include<stdio.h> int main(){ int a[3],k,i;scanf("%d %d %d",&a[0],&a[1],&a[2]); /* scanf("%d %d %d",&a[1],&a[2],&a[3]); */ k=0;for(i=0;i<3;i++) /* for(i=1;i<=3;i++) */ { ...
...http://acm.hdu.edu.cn/showproblem.php?pid=2021你确定你这程序能把他的测试过了么?你是不是看错题意了。第一行输入老师人数n。接下来输入n个数,表示老师工资。最后输出所需要的最小张数。如果我没看错的话,你的程序是对一个老师就输出一次。题目要求的是给所有老师张数的最小总和。
...http://acm.hdu.edu.cn/showproblem.php?pid=2023for(i=0;i<n;i++){ temp=0;for(j=0;j<m;j++)if(a[i][j]>=subject1[j])temp++;if(temp>=m)num++;} 没有细看,不过你这里应该是逻辑错误,temp>=m的条件难实现,num的值至多为1