| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
255ms,贴代码,好想知道0ms的同学是怎么实现的#include <iostream>
#include <string>
#include <vector>
int secret[201]={0};
char msg[200];
int loops[201]={0};
char en_msg[200];
using namespace std;
int main(){
while(true){
int n;
cin>>n;
if(n == 0){
break;
}
for(int i = 1; i<= n;i++){
cin>>secret[i];
}
for(int i=1;i<=n;i++){
if(loops[i] != 0){
continue;
}
int index = secret[i];
int loop = 1;
vector<int> pass_indices;
pass_indices.push_back(index);
while(index != i){
index = secret[index];
pass_indices.push_back(index);
loop++;
}
for(int j=0;j<pass_indices.size();j++){
int index = pass_indices[j];
loops[index]=loop;
}
}
int k;
cin>>k;
while(k != 0){
string s;
getline(cin,s);
s=s.substr(1);
int sl = s.length();
for(int i=0; i<n;i++){
if(i<sl){
msg[i]=s[i];
}else{
msg[i]=' ';
}
}
for(int i=0;i<n;i++){
int index = i+1;
int loop = loops[index];
int t = k%loop;
while(t>0){
index = secret[index];
t--;
}
en_msg[index-1] = msg[i];
}
for(int i=0;i<n;i++){
cout<<en_msg[i];
}
cout<<endl;
cin>>k;
}
for(int i=1;i<=n;i++){
loops[i]=0;
}
cout<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator