设为首页 加入收藏

TOP

nyoj 628 小媛在努力 [搜索]
2015-07-24 06:29:37 来源: 作者: 【 】 浏览:25
Tags:nyoj 628 努力 搜索

第一次是直接建一个10^7的数组 结果\ 内存大的要死!!

是不是可以不建数组 \这下好了

?

小媛在努力

时间限制:1000 ms | 内存限制:65535 KB 难度:2
描述
在多媒体数据处理中,数据压缩算法尤为重要。小媛上完课后就想自己发明一个数据压缩算法。她想呀想,终于想到一个方法。在多媒体数据中有很多数据都是重复的,所以她想把连续相同的数据用数据出现的次数和数据本身表示。例如: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表示的范围)。
输出
每组测试数据输出一行数字对,如上面描述的一样。两个数字之间用一个空格隔开。
样例输入
1
9 1 1 1 2 3 3 3 3 3 
样例输出
3 1 1 2 5 3 
第一次的代码:
 
     
 
     
#include
      
        int a[10000005]; int main() { int t, n, i, count; scanf( "%d", &t ); while( t -- ) { count = 1; scanf( "%d", &n ); for( i = 0; i < n; i ++ ) scanf( "%d", &a[i] ); for( i = 1; i < n; i ++ ) { if( a[i]==a[i-1] ) ++count; else { printf( "%d %d ", count, a[i-1] ); count = 1; } } if( a[n-1] == a[n-2] ) printf( "%d %d\n", count, a[n-1] ); else printf( "1 %d\n", a[n-1] ); } } 
      

第二次的
#include
      
        int main() { int n, t, a, b, c, i; scanf( "%d", &t ); while( t -- ) { scanf( "%d", &n ); scanf( "%d", &a ); c = 1; for( i = 1; i < n; i ++ ) { scanf( "%d", &b ); if( b == a ) ++c; else { printf( "%d %d ", c, a ); a = b; c = 1; } } printf( "%d %d\n", c, a ); } } 
      

 
     
 
     

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ 3370 Halloween treats 鸽巢.. 下一篇在复数类模板中使用友元函数实现..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: