标题:说道重点的30分全给他
只看楼主
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
结帖率:100%
已结贴  问题点数:30 回复次数:9 
说道重点的30分全给他
描述
在多媒体数据处理中,数据压缩算法尤为重要。小媛上完课后就想自己发明一个数据压缩算法。她想呀想,终于想到一个方法。在多媒体数据中有很多数据都是重复的,所以她想把连续相同的数据用数据出现的次数和数据本身表示。例如:1 1 1 2 3 3 3 3 3  压缩后及为3 1 1 2 5 3(表示3个1,1个2和5个3)。有想法后小媛就希望把它用代码实现了。但是大家都知道小媛现在整天都忙着苦B的复习考研,连电脑都摸不到。所以她希望作为ACMer的你帮她写一下。
输入
输入包含多组数据,第一行一个数字T代表输入样例数。

每组样例开始一个数M < 10^7表示这组数据中数字的个数,接下来M个数表示要被压缩的数字(数字都不超过int表示的范围)。
输出
每组测试数据输出一行数字对,如上面描述的一样。两个数字之间用一个空格隔开。
程序代码:
#include <stdio.h>

#define MAX 1000

int main(void)
{
  int group,M[100],in[100][MAX],times;
  int i,j;
  scanf("%d",&group);
  for(i=0;i<group;i++)
  {
    scanf("%d",&M[i]);
    for(j=0;j<M[i];j++)
    {
      scanf(" %d",&in[i][j]);
    }
    in[i][j]=in[i][j-1]-1;
  }
  for(i=0;i<group;i++)
  {
    times=1;
    for(j=1;j<=M[i];j++)
    {
      if(in[i][j]==in[i][j-1])
        times++;
      else
      {
        printf("%d %d",times,in[i][j-1]);
        times=1;
        if(j!=M[i])
          putchar(' ');
      }
    }
    printf("\n");
  }
}

WrongAnswer,大侠们看看哪里错了。As you can see,我连空格的输出都加条件判断了,难道是内存开的不够?

[ 本帖最后由 心灯甚亮 于 2013-2-5 11:08 编辑 ]
搜索更多相关主题的帖子: 多媒体 
2013-02-05 10:33
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
得分:0 
顺便说一句,栽在多组输入上的人还真不少
2013-02-05 10:38
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
得分:0 
自己顶,大神看看啊
2013-02-05 10:59
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:30 
这玩意儿能有什么难度呢?C99语法
程序代码:
#include <stdio.h>

int main()
{
    int n;
    scanf( "%d", &n );
    for( int r=0; r<n; ++r )
    {
        int m;
        scanf( "%d", &m );

        int v=0, s=0;
        for( int c=0; c<m; ++c )
        {
            int t;
            scanf( "%d", &t );

            if( t != v )
            {
                if( c != 0 )
                    printf( "%d %d ", s, v );
                v = t;
                s = 1;
            }
            else
            {
                ++s;
            }
        }
        printf( "%d %d\n", s, v );
    }

    return 0;
}

2013-02-05 11:07
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
得分:0 
问题是我的代码那里有问题??????????
2013-02-05 11:09
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用心灯甚亮在2013-2-5 11:09:01的发言:

问题是我的代码那里有问题??????????

你的代码,我看到M[100]后就没看,不知道你这个100哪里来的?为什么不是99,为什么不是101?
2013-02-05 11:12
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
得分:0 
好吧,我明白了,每输入一组就立即给出结果。。。。
2013-02-05 11:13
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
得分:0 
随便来的,你的代码通过了,我按你的输出方式吧我的再改改,3Q
2013-02-05 11:14
lijiale1994
Rank: 2
来 自:湖北孝感
等 级:论坛游民
帖 子:22
专家分:21
注 册:2012-12-10
得分:0 
回复 4楼 rjsp
for( int r=0; r<n;++r )
循环里面为什么用++r,是不是。。。。。。。。。。。。

新人发言,多多谅解
2013-02-05 14:38
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
得分:0 
在这里++r和r++一样的,赋值时就有区别了
2013-02-05 14:43



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




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

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