EOJ2993-替换
2020-04-05 18:20
274 查看
题目
给定一个有限长度的非负整数序列。一次操作是指从第一个元素开始,依次把数列中的每个数替换为它右边比它小的数的个数。对该数列不断进行这个操作。总有一个时刻该数列将不再发生改变(即此时每个数都恰好等于它右边比它小的数的个数)。例如给定数列:
5,44,19,6,49,1,27,19,50,20
连续进行五次操作后,依次得到新数列如下:
1,6,2,1,4,0,2,0,1,0
3,8,5,3,5,0,3,0,1,0
4,8,6,4,5,0,3,0,1,0
5,8,7,5,5,0,3,0,1,0
5,8,7,5,5,0,3,0,1,0
其中,第四次操作后,数列不再发生改变。
对给定数列,循环执行上述操作,直到其不再改变为止,输出最后得到的数列。
输入格式
第 1 行:一个整数 T (1≤T≤10) 为问题数。
对于每组测试数据:
第 1 行是一个正整数:数列长度 N ( 2 \lt N \leqslant 30 );
第 2 行有 N 个正整数:分别为该数列第 1 至第 N 个元素的值 a1,a2,⋯,an( a1,a2,⋯,an均为 1 - 1000 的数),每两个整数之间用一个空格分开。
输出格式
对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等)。
然后在一行中依次输出最后数列的所有元素,每两个元素之间用一个空格分开,最后一个元素后面没有空格。
样例
input 3 10 5 44 19 6 49 1 27 19 50 20 10 3 2 7 10 9 8 8 5 1 5 10 12 12 19 19 7 10 9 6 18 9 output case #0: 5 8 7 5 5 0 3 0 1 0 case #1: 9 2 3 6 5 3 3 2 0 0 case #2: 6 6 6 6 3 4 3 0 1 0
Code
#include <iostream> using namespace std; int main() { int N,num; int a[31]; int cnt, errorcnt; int flag; int i, j, k; cin >> N; for (i = 0; i < N; i++) { errorcnt = 1; cin >> num; for (j = 0; j < num; j++) cin >> a[j]; while (errorcnt!=0) { errorcnt = 0; flag = 0; for (j = 0; j < num; j++) { cnt = 0; for (k = j + 1; k < num; k++) { if (a[j] > a[k]) cnt++; } if (a[j] != cnt) { a[j] = cnt; errorcnt++; } } } cout << "case #" << i << ":" << endl; for (k = 0; k < num; k++) cout << a[k] << " "; cout << endl; } return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 倒计时替换
- 如何利用VB.NET提供的方法替换字符串中的某个模式
- mysql部分替换sql语句分享
- Emacs 中的正则替换
- 页面跳转、替换、刷新
- Unity怎样使用Shader将电影绿幕变成透明或者替换成其他背景
- 正则替换
- c语言中宏替换时的顺序
- 子类化窗口控件的窗口过程(系统级替换,与直接替换控件的WndProc方法不是一回事)
- HDU1698 Just a Hook 线段树成段替换
- 牛客网-剑指Offer-替换空格
- vi基本操作(2) -- 查找和替换
- 动态加载、移除、替换js/css文件
- Js根据class名替换html标签内容 ,在某标签前后添加内容
- class卸载、热替换和Tomcat的热部署的分析
- python刷题日记:剑指offer-替换空格
- linux sed 批量替换字符串
- dos批量替换当前目录后缀名
- 替换res\drawable中的图片
- mysql空值null替换成指定值及REPLACE用法