|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题描述
初始数组A[N]中为1,2,..,N,N个数字,现要进行M次操作,每次操作给定一个数字i,记其在数组中的位置为Bi,将A[1]..A[Bi]移到数组末尾。
输入格式
输入的第一行包含两个整数N,M。接下来M行,每行一个正整数,表示给定的数字i。
输出格式
一行,输出M次操作后的A数组。
样例输入
5 2
3
2
样例输出
3 4 5 1 2
样例说明
第一次操作后变为 4 5 1 2 3
第二次操作后变为 3 4 5 1 2
- #include<stdio.h>
- #define N 100
- int s[N];
- int main() {
- int n, m;
- scanf("%d%d", &n, &m); // n表示1到n数,m表示要移动到尾端的数字
- int i = 0;
- while (i < n) { // 将1到n存入数组
- s[i] = i + 1;
- i++;
- }
- int j = 0;
- int l = i - 1;
- while (j < m) {
- int k;
- scanf("%d", &k); // 输入需要排在尾部的数字
- while (s[l] != k) { // 若k不在队尾,数组右移,最后一位放前头
- int t = s[l];
- for (l; l - 1 >= 0; l--) {
- s[l] = s[l - 1];
- }
- s[0] = t;
- }
- j++;
- }
- int a;
- for (a = 0; s[a] != '\0'; a++) { // 输出
- printf("%d ", s[a]);
- }
- return 0;
- }
复制代码 |
|