码迷,mamicode.com
首页 > 其他好文 > 详细

编程之美--2.17

时间:2014-06-28 15:41:59      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   name   c   

题目描述:数组循环移动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 }

 

编程之美--2.17,布布扣,bubuko.com

编程之美--2.17

标签:style   blog   color   os   name   c   

原文地址:http://www.cnblogs.com/cane/p/3797831.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!