摘要:
/* 题目来自:http://blog.csdn.net/v_JULY_v* 题26:定义字符串的左旋转操作:把字符串前面若干个字符移动到字符串的尾部。* 如abcdef左旋转2位得到cdefab。* 方法:(可见《编程珠玑》) AB->BA: f(f(A)f(B)) = BA,f表示将字符串逆置* (补充)说明:将AB转换成BA,可将A逆置得到Ar,再将B逆置得到Br,再将整体ArBr逆置得到BA。* 如abcdef左旋2位,首先将ab逆置得到ba,再将cdef逆置得到fedc,再将整体bafedc逆置得到cdefab。*/ 1 #include <stdio.h> 2 3 阅读全文
随笔档案-2011年09月
算法100题27
2011-09-18 23:48 by justvi, 153 阅读, 收藏,
摘要:
/* 题目来自:http://blog.csdn.net/v_JULY_v* 题27:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。* 求总共有多少种跳法。* 方法:设最后一次跳的次数为f(n),则跳到n可以通过两种方法进行,一是在n-1级跳一级到第n级,一是在第n-2级跳两级到第n级* 所以总的方法f(n)=f(n-1)+f(n-2),递归可得解。* 此法会重复计算f(i)的值,所以转化为迭代,通过中间值保存计算的结果简化复杂度(可见sicp)*/ 1 #include <stdio.h> 2 3 int f(int n) 4 { 5 if (n == 1) 6 ... 阅读全文
算法100题51
2011-09-18 23:23 by justvi, 172 阅读, 收藏,
摘要:
/* 题目来自:http://blog.csdn.net/v_JULY_v* 题51:输入一个正数n,输出所有和为n连续正数序列。* 例如输入15,输出三个连续序列1-5,4-6和7-8* 方法:首先可以判断这样的序列一定出现在序列1...n的前半部分,可以通过两次循环求和,看和是否与n相等来确定序列的开头和结尾。* 有无更好方法?*/ 1 #include <stdio.h> 2 3 void func(int n) 4 { 5 int i, j, result; 6 for (i = 1; i <= n / 2; i++) 7 { 8 result... 阅读全文
算法100题54
2011-09-18 23:01 by justvi, 943 阅读, 收藏,
摘要:
/* 题目来自:http://blog.csdn.net/v_JULY_v* 题目54:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数数组位于数组的后半部分。* 可以借助快速排序中分成两个部分的思想:取数组中的一个数,移动元素使得数组前半部分的数小于基准数,后半部分大于基准数。* 用i标示当前元素,j标示最后一个为奇数的下标,若i处数为奇数,则与j+1处的数更换位置,更新i,j即可。*/ 1 #include <stdio.h> 2 3 void swap(int *a, int i, int j) 4 { 5 int temp; 6 tem... 阅读全文
算法100题14
2011-09-16 19:51 by justvi, 255 阅读, 收藏,
摘要:
/* 题目来自:http://blog.csdn.net/v_JULY_v* 题目14:输入一个已经按升序排列过的数组和一个数字,在数组中找出两个数,使的它们的和正好等于这个数字* 如1,2,4,7,11,15和数字15,则可以输出4和11* 方法:(可见《编程之美》) 初始化i,j分别指向数组开头和结尾,因为数组升序排列,则若arr[i]+arr[j]大于输入数,则可以确定此刻的arr[j]必不满足条件,因为它与最小的数字相加* 都大于输入数,则可以缩小范围(j--),同理可以处理i直至满足条件。*/ 1 #include <stdio.h> 2 3 void find(int 阅读全文
算法100题48
2011-09-16 12:59 by justvi, 203 阅读, 收藏,
摘要:
/* 题目来自:http://blog.csdn.net/v_JULY_v* 一个数组由一个递减数列左移若干位形成,如{4, 3, 2, 1,6,5}由{6,5,4,3,2,1}左移两位而成在这种数组中查找某一个数* 方法1:遍历数组查找次数,O(n)* 方法2:----------------------* 设原数列为:a0,...,an,移位后形成的数列为:b0,...,bn,* 且有ai=bj,则满足j=(i+len-m)%len (m为移位位数)* 要求得某数位置,可先求得次数在原数列中的位置再按上面公式计算而来。* 可以先求出数列中的最大值,已知数列长度及递减步长,则可以求... 阅读全文
浙公网安备 33010602011771号