标题:浙大ACM题在提交OJ以后出现Segmentation Fault,请各路大神看看问题在哪
只看楼主
jackjlc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-3-3
结帖率:100%
已结贴  问题点数:20 回复次数:12 
浙大ACM题在提交OJ以后出现Segmentation Fault,请各路大神看看问题在哪
#include<stdio.h>

int main()
{int n,z,s[101],count,set[10][100],p[10],x,y,sum,pt,i,j;
 float average;
 scanf("%d",&n);
 for(z=0;z<n;z++)
 {for(i=1;i<101;i++) s[i]=0;
  count=1;
  scanf("%d %d %d %d %d %d",&set[1][0],&set[1][1],&set[1][2],&set[1][3],&set[1][4],&set[1][5]);
  p[1]=5;
  for(i=0;i<6;i++) s[set[1][i]]=1;
  while(1)
  {pt=0;
   for(i=1;i<=count/2+1;i++)
    {j=count-i+1;
     for(x=0;x<=p[i];x++)
      for(y=0;y<=p[j];y++)
      {sum=set[i][x]-set[j][y];
       if(sum<0) sum=-sum;
       if(s[sum]==0)
       {s[sum]=count+1;
        set[count+1][pt]=sum;
        pt++;
       }
      }
    }
   for(i=1;i<=count/2+1;i++)
   {j=count-i+1;
    for(x=0;x<=p[i];x++)
     for(y=0;y<=p[j];y++)
     {sum=set[i][x]+set[j][y];
      if(sum>100) continue;
      if(s[sum]==0)
      {s[sum]=count+1;
       set[count+1][pt]=sum;
       pt++;
      }
     }
   }
   count++;
   p[count]=pt-1;
   sum=0;
   for(i=1;i<count+1;i++)
    sum=sum+p[i]+1;
   if(sum==100) break;
      
  }
  sum=0;
  for(i=1;i<101;i++)
   sum=sum+s[i];
  average=sum*1.0/100;
  printf("%.2f %d\n",average, count);
 }
 return 0;   
}
我在dev-c++里编的,运行了能得出正确结果,交了就是AC不了,求指点,题号是1558

[ 本帖最后由 jackjlc 于 2012-3-4 10:35 编辑 ]
搜索更多相关主题的帖子: 浙大 101 average include count 
2012-03-03 15:42
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
给个网址?

梅尚程荀
马谭杨奚







                                                       
2012-03-03 16:01
jackjlc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-3-3
得分:0 
回复 2楼 有容就大
什么网址?题目吗?在这http://acm.zju.
2012-03-03 16:13
jackjlc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-3-3
得分:0 
求大神们关注啊。。
2012-03-03 16:41
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:5 
可能是这句的问题:for(i=1;i<101;i++) s[i]=0; i从1开始那么s[0]是什么?你没处理啊。
set[0][?]也没处理吧。感觉是不太严谨。

[ 本帖最后由 有容就大 于 2012-3-3 17:51 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-03-03 17:16
jackjlc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-3-3
得分:0 
回复 5楼 有容就大
我后面没用到s[0]呐。。我也试了试把s[0]=0加进去了。。还是不行
2012-03-03 17:47
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:10 
set[count+1][pt]=sum;
        pt++;
这是你程序里的句子,我在后面加了个printf("%d\n", pt);想看下pt的值,程序如果没问题应该对程序没任何影响吧,但是这样运行后输出很多数值后出想系统报错!你试下,你的程序应该是数组越界或者是哪里溢出,我还没找到,期待高手现身。

梅尚程荀
马谭杨奚







                                                       
2012-03-03 19:19
jackjlc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-3-3
得分:0 
回复 4楼 jackjlc
我终于想到了。。是我set数组设的太少了,我改成set[30][100]就过了,看来我是没想到非常刁钻的数据会用到跟多数组,还是谢谢你了
2012-03-03 20:27
chan_
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:84
专家分:122
注 册:2012-2-29
得分:0 
学习中
2012-03-03 20:32
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:5 
楼主可否简单说下题目的意思  我这英语水平实在不行

                                         
===========深入<----------------->浅出============
2012-03-04 09:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-362126-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.080167 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved