算法设计
__輝
这个作者很懒,什么都没留下…
展开
-
排列问题的其中一种解法
实现代码: #include using namespace std; const int maxNumber = 5; void Perm(int list[], int direct[], int number){ int num = number; int index = -1; while (num > 0){ //寻找num的下标 for (int i = 0; i <原创 2015-10-17 10:16:50 · 330 阅读 · 0 评论 -
Counting Bits
Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1's in their binary representation and return them as an array. Example: For num = 5 y原创 2016-05-01 20:56:45 · 244 阅读 · 0 评论 -
Power of Three
Given an integer, write a function to determine if it is a power of three. Follow up: Could you do it without using any loop / recursion? class Solution { public: bool isPowerOfThree(int n)原创 2016-05-01 20:30:41 · 233 阅读 · 0 评论 -
Integer Break
Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maximum product you can get. For example, given n = 2, retur原创 2016-05-01 20:12:27 · 290 阅读 · 0 评论 -
产品试用体验
360将用户产品分为电脑软件、手机软件、智能硬件三大类,每个大类里有一些产品,其中第 i 个大类内有 ai 个产品。每个产品均各不相同,且一个产品不会同时属于多个类别。 你现在要从中取出不超过 n 个产品进行试用,并且要求第 i 个大类中的产品至少试用 li 个,至多试用 ri 个。 问一共有多少种不同的试用产品的选取方案。因为方案数太大,只需要输出总方案数除以 47 的余数即可。 输入格式原创 2016-03-03 23:16:28 · 462 阅读 · 0 评论 -
用Eratosthenes筛子算法,求解从2到n之间的素数
package demo; import java.util.BitSet; import java.util.Scanner; /** * This program computes all primes up to n. * @version 1.21 206-02-03 * @author Liangmh */ public class Sieve { public stati原创 2016-02-03 12:16:34 · 953 阅读 · 0 评论 -
2的次幂表示
问题描述 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。 将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0 现在约定幂次用括号来表示,即a^b表示为a(b) 此时,137可表示为:2(7)+2(3)+2(0) 进一步:7=2^2+2+2^0 (2^1用2表示) 3=2+2原创 2016-02-16 00:38:45 · 266 阅读 · 0 评论 -
区间k大数查询
问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表示询问个数。 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。 输出格式 总共输出m行,每行一个数,表原创 2016-02-15 23:46:47 · 235 阅读 · 0 评论 -
4-9汽车加油问题
问题描述:一辆汽车加满油后可行驶nkm。旅途中有若干加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并证明算法能产生一个最优解。 算法设计:对于给定的n个k个加油站位置,计算最少加油次数。 数据输入:由文件input.txt给出输入数据。第1行有2个正整数n和k,表示汽车加满油后可行驶nkm,且旅途中有k个加油站。接下来的1行中,有k+1个整数,表示第k个加油站与第k原创 2015-12-27 10:17:08 · 866 阅读 · 0 评论 -
5-1子集和问题
问题描述:子集和问题的一个实例为。其中,S={x1, x2, ……,xn}是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1, 使得S1的子集和等于c。 试设计一个解子集和问题的回溯法。 数据输入:由文件input.txt提供输入数据。文件第1行有2个正整数n和c,n表示S的大小,c是子集和的目标值。接下来的1行中,有n个正整数,表示集合S中的元素。 结果输出:将原创 2015-12-26 20:11:33 · 1058 阅读 · 0 评论 -
3-5乘法表问题
问题描述:定义于字母表{a, b, c}上的乘法表如下 a b c a b b a b c b a c a c c 依此乘法表,对任一定于于该表上的字符串,适当加括号后得到一个表达式。例如对于字符串x=bbbba,它的一个加括号表达式为(原创 2015-10-24 17:10:23 · 1052 阅读 · 0 评论 -
数字三角形问题
问题描述:给定一个由n行数字组成的数字三角形,如图 7 8 1 0 2 7 4 4 4 5 2 6 5 试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径进过的数字总和最大。 输入文件示例: inpu原创 2015-10-19 21:17:13 · 275 阅读 · 0 评论 -
石子合并问题
问题描述:在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。 输入文件: input.txt 4 4 4 5 9 输出文件: output.txt 43 54 算法思路:仿照动态规划求解矩阵连乘问题的方式,与矩阵原创 2015-10-18 16:15:46 · 290 阅读 · 0 评论 -
汉诺塔问题递归算法求解
#include void move(int n, char from, char to){ std::cout << "move the " << n << " from " << from << " to " << to << std::endl; } void Hanoi(int n, char from, char to, char by){ if (n >= 3){ Hano原创 2015-10-17 11:13:56 · 412 阅读 · 0 评论 -
计数排序算法实现
计数排序算法,利用空间换取时间 //计数排序 #include #include //MAX为需要排序的数据中,最大的数值 #define MAX 40 void sort(int* input, int* output, int length){ int Temp[MAX] = { 0 }; for (int i = 0; i < length; i++){ Temp[inp原创 2016-09-04 18:44:06 · 457 阅读 · 0 评论