WA求救!9235区间反转

在做不出来就要吃鞭子烧肉了(;´д`)ゞ

1 个赞

:thinking: :slight_smile:

114514

题目呢

1 个赞

这是哪的题

1 个赞

id都给你了

有一个长为n的数列,共有m次操作。每次操作会翻转一个区间l到r。问最终序列?

输入格式:

第一行一个整数n,表示序列中的元素个数。

第二行n个整数,表示原序列。

第三行一个整数m,表示翻转次数。

接下来m行每行两个整数l,r。

输出格式:

一行n个整数,表示最终序列。

样例输入:

3 1 2 3 1 1 2

样例输出:

2 1 3

约定:

所有数不超过1000

提示:

C++11

评测规则

加载最近代码

Selection deleted

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#include<bits/stdc++.h>

using namespace std;

int a[1005];

int main()

{

int n,m,l,r;

cin>>n;

for(int i=1;i<=n;i++)

{

cin>>a[i];

}

cin>>m;

while(m–)cin>>l>>r;

while(l<r)

{

swap(a[l],a[r]);

l++;

r–;

}

for(int i=0;i<n;i++)cout<<a[i]<<" ";

}

自测样例

最新编译结果

提交代码

难点在于翻转都知道,新建立一个数组,储存翻转得数

核心代码(是人都知道dddd):

	for(int i=1;i<=m;i++){
		int x,y;
		cin>>x>>y;
		int b[10001];
		int xb=0;
		for(int j=y;j>=x;j--){
			xb++;
			b[xb]=a[j];
		}
		xb=0;
		for(int j=x;j<=y;j++){
			xb++;
			a[j]=b[xb];
		}
	}
1 个赞

@邬承洛

1 个赞

我试试(希望不要逝世)

3Q(:slight_smile:)

我做出来了 可是不能发代码 所以骚瑞了:crazy_face:

1 个赞

用while嵌套swap(a[l],a[r])就行了,

2 个赞

建议格式化一下,


先点设置在点格式化就可以了。

像这样。