| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2008 人关注过本帖
标题:杭电acm 1004 Presentation Error求解
只看楼主 加入收藏
b465513006
Rank: 2
等 级:论坛游民
威 望:1
帖 子:70
专家分:48
注 册:2011-3-18
结帖率:73.33%
收藏
已结贴  问题点数:20 回复次数:5 
杭电acm 1004 Presentation Error求解
这是我得代码,实在不知哪里格式有错误,求解啊
#include<stdio.h>
#include<string.h>
char  b[1002][1002] ;
int pop[1002] ;
int d[2000] ;
int main()
{
   
    int n ,t,max=0 , t0 , i, t1 , t2 , k ,j, l,sum;
    while(scanf("%d",&n)!=EOF)
    {
        t=0 ;
        if(n==0) return 0 ;
        max=0 ;
        memset(d , 0 ,sizeof(d)) ;
        memset(b , 0 ,sizeof(b)) ;
        memset(pop , 0 , sizeof(pop)) ;
        for(i=0 ; i<n ; i++)
        {
            sum=0 ;
            scanf("%s",&b[i]) ;
            l=strlen(b[i]) ;
            for(j=0 ; j!=i ; j++)
            {
                if(strcmp(b[i],b[j])==0)
                    d[i]++ ;
            }
            if(d[i]>=max)
            {
                max=d[i] ;
                pop[i]=max ;
        
            }
        }
        for(i=0 ; i<=n ; i++)
        {
            if(pop[i]==max)
                printf("%s\n",b[i]) ;
        }
   
        
    }

    return 0 ;
}
搜索更多相关主题的帖子: pop acm include return 
2011-08-02 23:27
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:5 
是不是最后一个结果的输出不要 '\n' ?
2011-08-02 23:53
夜叶
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:189
注 册:2011-5-7
收藏
得分:5 
第二个for语句中j初始赋值和判断语句不恰当,应修改下吧
2011-08-03 06:11
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:5 
t 无用
t0 无用
k 无用
l 无用
sum 无用
pop 完全可以用d代替
对b的初始化无用

算法上没什么问题。
问题应该出在scanf("%s",&b[i]);这句上。
b[i]已经是指针了。换成scanf("%s", b[i]);

下面是我的AC代码。我都忘了我是什么时候在杭电的OJ上注册的帐号了
程序代码:
#include <stdio.h>
#include <string.h>

char balloon[1100][20];

int main()
{
    int i, j, n, color[1100], cn, max, max_index;
    char b[20];
    
    while(scanf("%d", &n), n)
    {
        for(i = 0; i < n; color[i++] = 0);
        cn = 0;
        max = 0;
        for(i = 0; i < n; i++)
        {
            scanf("%s", b);
            for(j = 0; j < cn; j++)
            {
                if(strcmp(balloon[j], b) == 0)
                {
                    color[j]++;
                    if(color[j] > max){ max = color[j]; max_index = j; }
                    break;
                }
            }
            if(j == cn){ color[cn]++; strcpy(balloon[cn++], b); }
        }
        printf("%s\n", balloon[max_index]);
    }
    return 0;
}

重剑无锋,大巧不工
2011-08-03 07:43
b465513006
Rank: 2
等 级:论坛游民
威 望:1
帖 子:70
专家分:48
注 册:2011-3-18
收藏
得分:0 
过了,稍微改了一下,可能是第二个for j要取等吧,谢谢各位了
#include<stdio.h>
#include<string.h>
char  b[1002][20] ;
int d ;
int main()
{
   
    int n ,max  , i ,j , pop;
    while(scanf("%d",&n)!=EOF)
    {
      
        if(n==0) break ;
        max=0 ;
        for(i=0 ; i<n ; i++)
        {
            d=0 ;
            scanf("%s",b[i]) ;
            for(j=0 ; j<=i ; j++)
            {
                if(strcmp(b[i],b[j])==0)
                    d++ ;
            }
            if(d>max)
            {
                max=d ;
                pop=i ;
               
            }
        }
        for(i=0 ; i<=n ; i++)
        {
            if(i==pop)
                printf("%s\n",b[i]) ;
        }
     }
    return 0 ;
}
2011-08-03 09:43
快速回复:杭电acm 1004 Presentation Error求解
数据加载中...
 
   



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

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