翻转数列的C++实现(急)悬赏30 给出代码即可 无须讲解
来源:百度知道 编辑:UC知道 时间:2024/09/28 11:14:57
描述
最近刚学完数组的使用。好学的Bill在课后进行了他自创编程练习:翻转数列
首先他定义了数列a,大小为n
开始的时候数列的值为 a[1] = 1, a[2] = 2, a[3] = 3 .... a[n] = n
然后,他就将数列的第b项到第e项进行翻转。
比如原来 数列a为 1,2,3,4,5
如果b = 2, e = 4,那么原来 1,2,3,4,5的数组序列就从第2项开始到第4项倒序
结果就变成了 1,4,3,2,5
在上次翻转的基础上,Bill选择新的b,e进行翻转。
这样反复地翻转了m次后
他想问你最后这个数列是怎么样的。
输入
第一行一个整数T表示有T组数据
每组数据第一行为两个整数n,m(0<n< 101, 0< m <100)
n表示数列的大小,m表示翻转的次数
接下来有m行
每行两个整数b,e(0<b<=e<=n)
表示该次翻转的下标范围。
输出
每组输出最后的数列
样例输入
2
3 1
1 3
3 2
1 3
2 3
样例输出
3 2 1
3 1 2
最近刚学完数组的使用。好学的Bill在课后进行了他自创编程练习:翻转数列
首先他定义了数列a,大小为n
开始的时候数列的值为 a[1] = 1, a[2] = 2, a[3] = 3 .... a[n] = n
然后,他就将数列的第b项到第e项进行翻转。
比如原来 数列a为 1,2,3,4,5
如果b = 2, e = 4,那么原来 1,2,3,4,5的数组序列就从第2项开始到第4项倒序
结果就变成了 1,4,3,2,5
在上次翻转的基础上,Bill选择新的b,e进行翻转。
这样反复地翻转了m次后
他想问你最后这个数列是怎么样的。
输入
第一行一个整数T表示有T组数据
每组数据第一行为两个整数n,m(0<n< 101, 0< m <100)
n表示数列的大小,m表示翻转的次数
接下来有m行
每行两个整数b,e(0<b<=e<=n)
表示该次翻转的下标范围。
输出
每组输出最后的数列
样例输入
2
3 1
1 3
3 2
1 3
2 3
样例输出
3 2 1
3 1 2
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
int t,n,m,b,e;
int* a;
cin>>t;
int iCount;
int i,j;
int trans;
for(iCount0;iCount<t;iCount++)
{
cin>>n>>m;
a=new int[n];
for(i=0;i<n;i++)
a[i]=i+1;
cin>>b>>e;
for(i=0;i<m;i++)
{
for(j=0;j<(e-b+1)/2;j++)
{
trans=a[e];
a[e]=a[b];
a[b]=a[e];
}
}
for(i=0;i<n;i++)
cout<<a[i];
cout<<endl;
}
}