XTU-OJ 1514 差分编码 I

题目描述

差分编码是音乐数据中常用的一种编码形式,它利用两个相连信号之间差别不大的特性,从而使得不用记录原数据,只需要记录与之前相差的数据,从而达到缩短编码总长度的目的。

比如有数据序列S=(100,101,100),其差分编码序列为(100,1,−1)。原序列需要使用3个字节,一共24比特表示;差分编码第一元素为原值,需要1个字节,后两个为差分值,其值域为[−1,1],差分值使用等长编码,每个最少需要使用2个比特表示,所以最小可以只用12个比特表示。

现在给你一个原数据的序列,请计算出差分序列。

输入

第一行是一个整数T(1≤T≤1000),表示样例的个数。

以后每两行一个样例,样例第一行是一个整数n(1≤n≤1000),表示数据的个数。样例的第二行为n个正整数si(0≤si≤255)。

输出

每行输出一个样例的结果,为n个整数,每个整数之间用一个空格隔开。

样例输入

2
3
100 101 102
3
100 101 99

样例输出

100 1 1
100 1 -2

这题还挺简单的,就是输出后一个数减前一个数的差,也没有溢出或者超时什么的坑点。

#include<stdio.h>
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int n;
		scanf("%d",&n); 
		int arr[1000],str[1004];
		for(int i=0;i<n;i++)
		{
			scanf("%d",&arr[i]);
		}
		str[0]=arr[0];
		for(int i=1;i<n;i++)
		{
			str[i]=arr[i]-arr[i-1];
		}
		for(int i=0;i<n-1;i++)
		{
			printf("%d ",str[i]);
		}
		printf("%d\n",str[n-1]);
	}
	return 0;
 } 

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值