zoukankan      html  css  js  c++  java
  • poj 1206

     1 /**
     2 题意: 给定一序列,置换k次之后  输出其状态
     3 置换: 考察循环节长度,
     4 思路: 分别求出每个元素的循环节的大小,用k 模其大小,大的k次之后的位置, 输出即可
     5 **/
     6 
     7 #include <iostream>
     8 #include <cstring>
     9 #include <cstdio>
    10 using namespace std;
    11 
    12 int main()
    13 {
    14     int n;
    15     int sec[250];
    16     int path[250][250];
    17     int len[250];
    18     while(cin>>n&&n){
    19         memset(path,0,sizeof(path));
    20         memset(len,0,sizeof(len));
    21         int t;
    22         for(int i=0;i<n;i++){
    23             cin>>t;
    24             sec[i] = t-1;
    25         }
    26         for(int i=0;i<n;i++){
    27             int j= i;
    28             path[i][0] = j;
    29             len[i] = 1;
    30             for(j=sec[j];j!=i;j=sec[j])
    31                 path[i][len[i]++] = j;
    32         }
    33         int k;
    34         char str[250];
    35         while(cin>>k&&k){
    36             getchar();
    37             gets(str);
    38             char res[250];
    39             //int len = strlen(str);
    40             int m=0;
    41             for(;str[m];m++);
    42             for(int j=m;j<n;j++)
    43                 str[j]=' ';
    44             for(int i=0;i<n;i++)
    45                 res[path[i][k%len[i]]] = str[i];
    46             res[n]='';
    47             cout<<res<<endl;
    48         }
    49         cout<<endl;
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    [leetCode]剑指 Offer 43. 1~n整数中1出现的次数
    [leetCode]剑指 Offer 42. 连续子数组的最大和
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
    POJ
    POJ
  • 原文地址:https://www.cnblogs.com/Bang-cansee/p/3724284.html
Copyright © 2011-2022 走看看