讨论 / 牛给看下程序~
飞雪天涯 2011-10-29 19:36:00
点我顶贴 收藏 删除
#include<iostream>

#define MAXN 100000

using namespace std;

int txt[MAXN+1],temp[MAXN+1];

int main (void){

int n,k;

cin>>n>>k;

for (int i=1;i<=n;i++) txt[i]=i;

for (int p=1;p<=k;p++){

int a,b,c;cin>>a>>b>>c;a--;

if (c>b){

int pos=0;

for (int i=b+1;i<=c;i++)

temp[pos++]=txt[i];

for (int i=a+1;i<=b;i++)

temp[pos++]=txt[i];

for (int i=a+1,j=0;i<=c&&j<pos;i++,j++)

txt[i]=temp[j];

}

else if (c<a){

int pos=0;

for (int i=a+1;i<=b;i++)

temp[pos++]=txt[i];

for (int i=c+1;i<=a;i++)

temp[pos++]=txt[i];

for (int i=c+1,j=0;i<=b&&j<pos;i++,j++)

txt[i]=temp[j];

}

}

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

cout<<txt[i]<<endl;

cout<<txt[10];

//while(1);

return 0;

}

/*

13 3

6 12 1

2 9 0

10 13 8

=======

6

7

8

9

10

11

12

2

3

4

*/

#1 飞雪天涯@2008-10-28 07:34:00
回复 删除
哪错了?
#2 飞雪天涯@2008-11-07 07:30:00
回复 删除
哪错了!!!
#3 飞雪天涯@2008-11-07 08:03:00
回复 删除
Where?
#4 飞雪天涯@2008-11-12 05:13:00
回复 删除
那里1111
#5 wh3z_wsc@2011-10-29 19:36:00
回复 删除
c可能在A,B之间

我的程序同样模拟

也是错的:

#include<iostream>

using namespace std;

int a[100010],b[100001];

int main(){

int i,j,n,k,A,B,C,d,e;

cin>>n>>k;

for(i=1;i<=n;i++)a[i]=i;

for(i=1;i<=k;i++){

cin>>A>>B>>C;

for(j=A,d=0;j<=B;j++,d++)

b[d]=a[j];

if(C<=A)

{for(j=B,d=A-1;j>=C+1;j--,d--)

a[j]=a[d];

for(j=C+1,d=0;d<=B-A;j++,d++)

a[j]=b[d];}

else {for(j=A,d=B+1;d<=C;j++,d++)

a[j]=a[d];

for(d=j-1,e=0;e<=A-B;d++,e++)

a[d]=b[e];}

}

for(i=1;i<=10;i++)cout<<a[i]<<endl;

}

查看更多回复
提交回复