zoukankan      html  css  js  c++  java
  • 编程之美--2.17

    题目描述:数组循环移动K位

    分析:这道题和之前碰到的字符串循环移位其实是一个思路的,编程珠玑上面也讲了这道题。

    (1)第一种方法是对数组划分成两个部分,对两部分进行反转,同时对整个数组进行反转

    (2)第二种方法是将第i位的元素和(i+k)%N的元素交换,从第0个元素开始,循环直到回到第0个元素。

     1 #include <iostream>
     2 #include <queue>
     3 #include <climits>
     4 #include <algorithm>
     5 #include <memory.h>
     6 #include <stdio.h>
     7 #include <ostream>
     8 #include <vector>
     9 #include <list>
    10 #include <cmath>
    11 #include <string>
    12 #include <stdexcept>
    13 #include <stack>
    14 using namespace std;
    15 
    16 void fun(string s,int k)
    17 {
    18     k = k%s.length();
    19     int t = 0;
    20     char c = s[t];
    21     bool flag = true;
    22     while(flag)
    23     {
    24         char tmp = s[(t+k)%s.length()];
    25         s[(t+k)%s.length()] = c;
    26         t = (t+k)%s.length();
    27         if(t == 0)
    28         {
    29             flag = false;
    30             s[t] = c;
    31         }
    32         c = tmp;
    33     }
    34     cout<<s<<endl;
    35 }
    36 
    37 int main()
    38 {
    39     string s("abcd");
    40     fun(s,1);
    41     return 0;
    42 }
  • 相关阅读:
    缅怀
    74LS164的使用
    跑步
    Datasheet,你会读么?[转]
    清华附小给的书单
    iOS-小知识
    网络-GET&POST
    网络-基础
    网络-HTTP其他常见方法
    数据解析
  • 原文地址:https://www.cnblogs.com/cane/p/3797831.html
Copyright © 2011-2022 走看看