随笔分类 - Unclassified
摘要:一台自动售货机能提供6种不同的饮料。售货机上有6个不同的按钮,分别对应这6种不同的饮料。顾客通过这些按钮选择不同的饮料。售货机有一个硬币槽和找零槽,分别用来收钱和找钱,现为这个系统设计一个用例图。用例之间才有类属关系,Actor之间的继承关系用泛化关系来表示。
阅读全文
posted @ 2013-03-20 17:22
加拿大小哥哥
摘要:一.问题描述 n!或者c(n,m)=n*……(n-m+1)/n!或者p(n,m)= n*……(n-m+1),这些问题全都可通过连乘解决。二.注意事项: 小数的组合数可以通过刘汝佳那种方式(ans=ans*b/a),通过10^num = n!判断(log10(n!))出阶乘的位数(num+1); 在阶乘中若是每个数组元素上存储多位(此时需要注意中间结果溢出问题),则输出需要printf("%5d")。 阶乘中间结果是否会溢出:比如2000的阶乘,就这“a[k] = a[k]*j + w”可能溢出;按存储一个数字分析,a[k]最大9,j最大1999,w最大是9,不会溢出。三.程
阅读全文
posted @ 2013-03-18 12:50
加拿大小哥哥
摘要:1 /* 2 一个N个整数的无序数组,给你一个数sum,求出数组中是否存在两个数,使他们的和为sum O(nlogn) 3 解题思路:先排序 在左右夹击判断,类似二分查找的思想。 4 */ 5 #include <stdio.h> 6 #include <stdlib.h> 7 int find(int a[], int len, int sum, int *x, int *y) 8 { 9 10 int i = 0, j = len - 1;11 12 if (sum < a[0]) {13 return -1;14 }15 16 whil...
阅读全文
posted @ 2013-03-13 07:57
加拿大小哥哥
摘要:<<问题描述: 有n种不同面值的硬币,各硬币面值存于数组T[1:n];现用这些面值的钱来找钱;各面值的个数存在数组Num[1:n]中。对于给定的1<=n<=10,硬币面值数组、各面值的个数及钱数m,0<=m<=2001,编程计算找钱m的最少硬币数。 input : 第一个数字n,后面n行每行两个数,面值T[i],面值个数Num[i];最后是钱数m。 output:最少硬币数。Sample intput : 3 1 3 2 3 5 3 18Sample output: 5<<算法分析: 若用动态规划的话,设f(i,Si)表示在剩余钱数为i,以及剩余
阅读全文
posted @ 2013-03-09 12:48
加拿大小哥哥
摘要:一.问题描述 用2 台处理机A 和B 处理n个作业。设第i 个作业交给机器A 处理时需要时间ai,若由机器B来处理,则需要时间bi。由于各作业的特点和机器的性能关系,很可能对于某些i,有ai>=bi,而对于某些j,j≠i,有aj<bj,既不能将一个作业分开由2 台机器处理,也没有一台机器能同时处理2 个作业。设计一个动态规划算法,使得这2 台机器处理完这n个作业的时间最短(从任何一台机器开工到最后一台机器停工的总时间)。 input 6 2 5 7 10 5 2 3 8 4 11 3 4 output 15二.问题分析 下面是错误算法 1 /* 2 算法采用二进制枚举,但是这...
阅读全文
posted @ 2013-03-08 23:01
加拿大小哥哥
摘要:一.问题描述 n个元素的集合{1,2,?, n }可以划分为若干个非空子集。例如,当n=4 时,集合{1,2,3,4}可以划分为15 个不同的非空子集如下:{{1},{2},{3},{4}},{{1,2},{3},{4}},{{1,3},{2},{4}},{{1,4},{2},{3}},{{2,3},{1},{4}},{{2,4},{1},{3}},{{3,4},{1},{2}},{{1,2},{3,4}},{{1,3},{2,4}},{{1,4},{2,3}},{{1,2,3},{4}},{{1,2,4},{3}},{{1,3,4},{2}},{{2,3,4},{1}},{{1,2,3,4.
阅读全文
posted @ 2013-03-08 06:58
加拿大小哥哥
摘要:1.今天是光棍节。聪明的NS想到了一个活动来丰富这个光棍节。规则如下:每个光棍在一个纸条上写一个自己心仪女生的名字,然后把这些纸条装进一个盒子里,这些光 棍依次抽取一张纸条,如果上面的名字就是自己心仪的女生,那么主持人就在现场给该女生打电话,告诉这个光棍对她的爱慕之情,并让光棍当场表白,并得到现场所有人的祝福,没抽到的,嘿嘿就可以幸免了。假设一共有N个光棍,其中有M个没有抽到自己的纸条,求发生这种情况一共有多少种可能.。输入 每行包含两个整数N和M(1<M<=N<=20),以EOF结尾。 输出 对于每个测试实例,请输出一共有多少种发生这种情况的可能,每个实例的输出占一行。 解
阅读全文
posted @ 2013-03-07 18:04
加拿大小哥哥
摘要:一.问题描述 设 n 是一个正整数, 2*n 的标准二维表是由正整数 1, 2, ..., 2*n 组成的2*n 数组, 该数组的每行从左到右递增, 每列从上到下递增. 2*n 的标准二维表全体记为 Tab(n). 譬如: 当 n = 3 时 Tab(3) 如下: 1 2 3 1 2 4 1 2 5 1 3 4 1 3 5 4 5 6 3 5 6 3 4 6 2 5 6 2 4 6二.问题分析 同学说就是卡塔南数。下面的是组合数公式 1 //c(n,m) 2 long long zuhe(int n,int m) 3 { 4 int a,b,ans; 5 a=n...
阅读全文
posted @ 2013-03-07 17:14
加拿大小哥哥
摘要:最大子段和问题(Maximum Interval Sum)一.问题描述 给定长度为n的整数序列,a[1...n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大.或者求出最大的这个和.例如(-2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4]。二.算法分析 1.穷举法 1 int start = 0;//起始位置 2 int end = 0; //结束位置 3 int max = 0; 4 for(int i = 1; i <= n; ++i) 5 { 6 for(int j = i; j <= n;++j) 7 { 8 ...
阅读全文
posted @ 2013-03-07 17:09
加拿大小哥哥
摘要:一.双色Hanoi塔问题 <<设A、B、C是3 个塔座。开始时,在塔座A 上有一叠共n 个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1,2,……,n,奇数号圆盘着蓝色,偶数号圆盘着红色,如图所示。现要求将塔座A 上的这一叠圆盘移到塔座B 上,并仍按同样顺序叠 置。在移动圆盘时应遵守以下移动规则: 规则(1):每次只能移动1 个圆盘; 规则(2):任何时刻都不允许将较大的圆盘压在较小的圆盘之上; 规则(3):任何时刻都不允许将同色圆盘叠在一起; 规则(4):在满足移动规则(1)-(3)的前提下,可将圆盘移至A,B,C 中任一塔座上。<<试设计一个算法
阅读全文
posted @ 2013-03-07 12:33
加拿大小哥哥
摘要:求逆序数时间限制:2000 ms | 内存限制:65535 KB难度:5描述在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。现在,给你一个N个元素的序列,请你判断出它的逆序数是多少。比如 1 3 2 的逆序数就是1。输入第一行输入一个整数T表示测试数据的组数(1<=T<=5) 每组测试数据的每一行是一个整数N表示数列中共有N个元素(2〈=N〈=1000000) 随后的一行共有N个整数Ai(0<=Ai<1000000000),表示数列中的所有元素。数据保证在多组测试数据中,多于1
阅读全文
posted @ 2013-03-07 07:48
加拿大小哥哥
摘要:<<n个元素{1,2,……, n }有n!个不同的排列。将这n!个排列按字典序排列,并编号为0,1,…, n!-1。每个排列的编号为其字典序值。例如,当n=3时,6 个不同排列的字典序值如下:字典序值 0 1 2 3 4 5 排列 123 132 213 231 312 321<<算法设计: 给定n以及n个元素{1,2,?, n }的一个排列,计算出这个排列的字典序值,以及按字典 序排列的下一个排列。 数据输入: 输出元素个数n。接下来的1 行是n个元素 {1,2,……, n }的一个排列。 结果输出: 将计算出的排列的字典序值和按字典序排列的下一个排列输出。第一行是字
阅读全文
posted @ 2013-03-06 21:21
加拿大小哥哥
摘要:<<问题描述: 给定一个自然数n,由n 开始可以依次产生半数集set(n)中的数如下。 (1) n∈set(n); (2) 在n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。 注意半数集是多重集。<<算法设计: 对于给定的自然数n,计算半数集set(n)中的元素个数。 题目出自《计算机算法设计与分析》 王晓东 1 #include <iostream> 2 #include <conio
阅读全文
posted @ 2013-03-06 14:13
加拿大小哥哥
摘要:点到直线距离:Ax+By+C=0坐标(Xo,Yo),那么这点到这直线的距离就为:│AXo+BYo+C│/√(A2+B2),刚开始一直以为要减一,把直线一般公式记成了Ax+By+C=1。<<问题描述:某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x坐标(东西向)和y坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置?证明可在线性时间内确定主管道的最优位置。<<给定n口油井的位置,编程计算各油井到主管道之
阅读全文
posted @ 2013-03-06 13:20
加拿大小哥哥
摘要:有m*n(m <=100,n <=100)个金币在桌面上排成一个m行n 列的金币阵列。每一枚金币或正面朝上或背面朝上。用数字表示金币状态,0表示金币正面朝上,1 表示背面朝上。 金币阵列游戏的规则是: (1)每次可将任一行金币翻过来放在原来的位置上; (2)每次可任选2 列,交换这2 列金币的位置。 编程任务:给定金币阵列的初始状态和目标状态,编程计算按金币游戏规则,将金币阵列从初始状态变换到目标状态所需的最少变换次数。Input 输入数据有多组数据。第1行有1 个正整数k,表示有k 组数据。每组数据的第1 行有2 个正整数m 和n。以下的m行是金币阵列的初始状态,每行有n 个数.
阅读全文
posted @ 2013-03-05 22:14
加拿大小哥哥
摘要:1 //最长上升子序列 ,今晚偶尔想起来做了下,已经OJ测试 2 #include <iostream> 3 #include <cstring> 4 using namespace std; 5 6 int a[100]; 7 //a数组记录以j为结尾的 长度 8 void solve(int *ans,int n) 9 {10 int i,j,k;11 a[0] = 1;12 for(i=1; i<n; i++)//必须从头开始算 13 {14 for(j=0; j<i; j++)15 {16 ...
阅读全文
posted @ 2013-01-12 21:14
加拿大小哥哥
摘要:1 //验证2到一百万(任何一个大于2的偶数都可以表示成两个素数之和) 2 #include <iostream> 3 #include <cstring> 4 #include <cmath> 5 using namespace std; 6 7 const int N = 1000000; 8 9 bool vis[N] = {0};10 void init_prim()11 {12 int i,j,k;13 int m = (int)(sqrt(N)+0.5); 14 memset(vis,0,sizeof(vis));15 vis[0] = 1;..
阅读全文
posted @ 2013-01-08 18:51
加拿大小哥哥
摘要:关中断和开中断其实就是像我们生活中的开关一样。 关中断是为了保护一些不能中途停止执行的程序而设计的,计算机的CPU进行的是时分复用,即每个时钟周期内,CPU只能执行一条指令。在多道程序设计的环境下(就是我们通常所说的多个程序同时运行时),CPU是不断地交替地将这些程序的指令一条一条的分别执行,这样从宏观上看我们就感觉多个程序是在同时执行,但从微观上看则是CPU在不同的时间段(极短)内执行着不同程序的单条指令。而CPU在这些指令之间的切换就是通过中断来实现的。关中断就是为了让CPU在一段时间内执行同一程序的多条指令而设计的,比如在出现了非常事件后又恢复正常时,CPU就会忙于恢复非常事件出现之..
阅读全文
posted @ 2013-01-07 17:53
加拿大小哥哥
摘要:这是开发课程,一要有固定的练习时间,二要多想多练多练多想,(练习时间:学习时间》2:1)。 能力就是你的技术和解决问题能力。 看了句经典话:结婚证对男人来说是无期徒刑证,是女人的上岗证。 color后跟颜色名称,可能不被所有浏览器接受,使用十六进制时会被所有浏览器接受。 html选择器 这是一个段落. id选择器 这是一个段落. 类选择器 这是一个段落. 属性选择器 这是一个段落. 这是一个段落. 这是一个段落. 直接样式表用法 这是一个段落. 这是另一个段落。 ...
阅读全文
posted @ 2012-12-28 21:39
加拿大小哥哥
摘要:1 方法一: 2 const double eps = 1e-8; 3 double m = sqrt(n); 4 double temp = (double)((int)m); 5 fabs(m-temp)<eps 6 7 方法二: 8 fabs(n-temp*temp)<eps 9 10 方法三:(这个不对,判断的是是否为2的方幂)11 n>0 && n&(n-1)==0
阅读全文
posted @ 2012-12-27 07:09
加拿大小哥哥