笔试题/面试题
文章平均质量分 57
latalata
IT民工
展开
-
整数划分问题(递归策略)
下午写了一下整数划分问题,Debug了很久,老是输出得不到预期得结果,。直到将每个划分步骤保存到数组中才解决这个问题。总算通过了!so Happy! 代码如下,(懒得简化了)/*问题描述:// 将一个正整数n表示成一系列正整数之和,// n = n1 + n2 + ... + nk ( 其中, n1 >= n2 >= ... >= nk , k >= 1 )// 正整数n的一个这种表示称为原创 2006-11-28 21:28:00 · 801 阅读 · 0 评论 -
微型蓝球赛问题
/*问题描述: 甲,乙两队进行蓝球比赛,结果甲队以S:T 获胜.(T 由键盘输入). 比赛中, 甲队得分始终领先(严格大于乙队). 规定以任何方式进一 球都只得一分. 编程序打印该比赛的每一种可能的不同的得分过程, 以及所有不同 过程的总数.*/#includeusing namespace std;bool Process[20];//存储比赛过程,true代表甲队得分,false代表已原创 2006-12-11 09:52:00 · 1173 阅读 · 0 评论 -
邮票封面设计问题
/*问题描述:给定一个信封,最多只允许贴 N张邮票,计算在给定K(N+K(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大max,使得1__max之间的每一个邮资值都能得到。 例如:N=3,K=2,如果面值分别为1分、4分,则在1分__6分之间的每一个邮资值都能得到 (当然还有8分、9分、和12分):如果面值分别为1分、3分则在1分--7分之间的每一个邮资值都能得到。 可原创 2006-12-14 09:26:00 · 1013 阅读 · 0 评论 -
谁家孩子跑最快.....
/*问题描述:张王李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,跑第一得9分,跑第2得8分,依此类推。比赛结果各家的总分相同,且这些孩子没有同时到达终点的,也没有一家的两个或三个孩子获得相连的名次。已知获第一名的是李家的孩子,获得第二的是王家的孩子。问获得最后一名的是谁家的孩子?*/ #includeusing namespace std;int Label[9],原创 2006-12-15 09:39:00 · 1508 阅读 · 0 评论 -
马踏棋盘问题
/*问题描述:N*N的棋盘,从棋盘中的某个格开始,是否存在经过棋盘上所有格一次且仅一次的通路!*/ //回溯方式#includeusing namespace std;#define N 8 //N*N的棋盘int Roads[N*N];//存储走的方式int count=0;//存储共有几种走的方式bool visited[N+2][N+2];//加边界,便于处理,记录访问过的格int原创 2006-12-12 20:50:00 · 742 阅读 · 0 评论 -
区分旅客国籍.....
/*问题描述:在一个旅馆中住着六个不同国籍的人,他们分别来自美国、德国、英国、法国、俄罗斯和意大利。他们的名字叫A、B、C、D、E和F。名字的顺序与上面的国籍不一定是相互对应的。现在已知:1)A美国人是医生。2)E和俄罗斯人是技师。3)C和德国人是技师。4)B和F曾经当过兵,而德国人从未参过军。5)法国人比A年龄大;意大利人比C年龄大。6)B同美国人下周要去西安旅行,而C同法国人下周要去杭州度假原创 2006-12-17 09:06:00 · 1680 阅读 · 0 评论 -
简单的贪吃蛇
简单的贪吃蛇:Sample Input18NWWWWWWWWWWSESSSWS20SSSWWNENNNNNWWWWSSSS30EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE13SWWWWWWWWWNEE0Sample OutputThe worm successfully made all 18 moves.The worm ran into itself on mo原创 2007-06-22 20:35:00 · 3823 阅读 · 0 评论 -
一道2005金山笔试题
问题描述:/*2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符*移到串的前部分,前面的非*字符后移,但不能改变非*字符的先后顺序,函数返回串中字符*的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)*/#includeusing namespace std;int charB原创 2008-11-29 10:26:00 · 644 阅读 · 0 评论 -
求执行者问题
问题描述: 定义一个数组中,若某个值出现的次数在一半以上,则为执行者。如下数组: A[8]={1,2,2,4,2,4,2,2} 由于2出现上午次数5次大于5/8>0.5, 所以2为数组A[8]的执行者。 要求:求出数组的执行者,与其对应的下标。 你需要用到的函数: int administer( int *s,int length)//实现#includeusing namespace原创 2008-11-28 16:04:00 · 392 阅读 · 0 评论 -
寻找独异数
问题描述:/*一个极大数组,数组里面有一系列数,其中有一个数单独出现一次,其它的数出现了两次,请找出这个单独出现的数时间复杂度O(n),空间复杂度O(1) */// 利用位异或性质#includeusing namespace std;int singleNum(const int Num[], int s_length){ assert(s_length>0 && (s_length%2!原创 2008-12-08 10:43:00 · 424 阅读 · 0 评论 -
内存拷贝实现
问题描述:写一个函数,完成内存之间的拷贝#includeusing namespace std;// 返回void *,可支持链式操作 void *memcpy_(void *dest, const void *source, unsigned int c_length){ assert(dest && source); if(dest==source)return dest;原创 2008-12-08 10:50:00 · 433 阅读 · 0 评论 -
集合中找K小元素
/*问题描述:一个集合满足如下条件: (1)1是集合的元素; (2) 若 P 是集合的元素,则 2*P+1,4*P+5 也是集合的元素。 求:此集合中最小的 K 个元素。*/ #includeusing namespace std;struct IntNode{ int data; IntNode* next;};int main(){ int P,K,count; P=1;原创 2006-12-08 20:44:00 · 663 阅读 · 0 评论 -
乘积最大的分解
/*问题描述:已知 N 个正整数满足 K1+K2+...+Kn=M。求一组最佳的分解,使得 K1*K2*....*Kn 为最大。 例如:N=2时,给定 K1+K2=6,当 K1=3,K2=3 时,K1*K2=9 为最大*/#includeusing namespace std;#define M 10int Max,temp[M],K[M];//最多可以有M个正整数相加,K1+.....+Km原创 2006-12-07 20:32:00 · 1156 阅读 · 0 评论 -
求子集问题
#includeusing namespace std;const int N=5;unsigned int n=0;int A[N]={1,2,3,4,5};int T[N];int main(){ void PrintSubset(int m); for(int i=0;i PrintSubset(0); return 0;}void PrintSubset(int m){ if(m>=原创 2006-11-27 18:38:00 · 786 阅读 · 0 评论 -
循环赛日程表问题
/*问题描述:设有n个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表: 1.每个选手必须与其他n-1个选手各赛一次; 2.每个选手一天只能参赛一次; 3.N是偶数时,循环赛在n-1天内结束。N是基数时,循环赛进行N天. 请按此要求将比赛日程表设计成有n行和n-1列的一个表。在表中的第i行,第j列处填入第i个选手在第j天所遇到的选手。其中原创 2006-11-29 10:31:00 · 1456 阅读 · 1 评论 -
循环赛日程表问题之二
这个循环赛的问题描述在上篇中提到,晚上写了一下,也不难,主要是区分队伍的奇偶情况(奇数时有队伍要轮空),构出对阵环来!没有采用二分法!代码如下:#include#include#define N 13 //确定参赛队伍的个数int Rounds=0;//循环轮数int EVEN[N]; //偶数队伍对阵环int ODD[N+1];//奇数队伍对阵环using namespace std;int m原创 2006-11-30 21:23:00 · 1148 阅读 · 0 评论 -
素数环问题
/* 问题描述:用自然数1到20构成一个素数环,环中的每个元素与其相邻元素的和都构成素数。请编程实现并输出这个环*/ 这里采用了递归策略,可以输出所有情况,不过存在重复输出问题,重复输出数为N,(环是没有次序的)现在没有想到好的解决方法。若自然数个数确定为20;则构环的数目相当大,程序运行时间也高得惊人。测试时可以减少自然数。代码如下:版本:1.0#include#includeusi原创 2006-12-01 18:51:00 · 1450 阅读 · 0 评论 -
取棋子实现
可以玩玩,...#includeusing namespace std;int main(){ char Rule;//竞赛规则 char temp,WhoFirst;//谁先(Y--人先,C电脑先) int N,K,num,Left_Num; do{ cout"输入竞赛规则:A. 取最后一颗棋子的那一方为败." cout" B. 取最后一颗棋子的那一方为胜." c原创 2006-12-06 17:03:00 · 838 阅读 · 0 评论 -
城市道路问题
问题描述:某地街道把城市分割成矩形方格,每一方格叫作块,某人从家中出发上班,// 向东要走M块,向北要走N块,(见图)。请设计一个程序,由计算机寻找并// 打印出所有的上班的路径。(只能向右或向上,否则会死循环) 今天没空,改天写好了贴上来原创 2006-12-03 21:57:00 · 1121 阅读 · 0 评论 -
城市道路问题之二
接上文,代码如下:#includeusing namespace std;#define N 5#define M 5bool Direct;//两个方向,朝右Direct=true,朝上Direct=falsebool Track[M+N];//存储走过的轨迹int count=0;//存储共有几种途径int main(){ void Tracks(int n,int x,int y);//坐原创 2006-12-04 10:04:00 · 726 阅读 · 0 评论 -
硬币称重
/*问题描述:设有8枚硬币a,b,c,d,e,f,g,h,其中有一枚硬币是伪造的。 真伪硬币的区别仅是重量不同,可能重,可能轻。今要求以天平为工具,用最少的 比较次数挑出伪造硬币,并鉴定它是重还是轻。*/ //只是找出不标准的球,没有判别轻重,3次称量#includeusing namespace std;int main(){ int a,b,c,d,e,f,g,h; int原创 2006-12-04 16:20:00 · 1740 阅读 · 0 评论 -
取棋子问题
/*问题描述: ( 取棋子 ) 设有N颗棋子,由人和计算机轮流从中取走若干颗。每方每次最 多取K颗,最少取1颗 (K值不能超过总数的一半,也不能小于1)。试编写一程 序使计算机有较多的获胜机会。 屏幕输入提示: (1) 输入竞赛规则:A. 取最后一颗棋子的那一方为败. B. 取最后一颗棋子的那一方为胜. (2) 总共有多少颗棋原创 2006-12-06 10:50:00 · 2532 阅读 · 0 评论 -
野人与传教士
/* 问题描述:设有三个传教士和三个野人来到河边,打算乘一只船从右 岸渡到左岸去。该船最大负载能力为两人,在任何时候,如果野人人数超过传教士 人数,那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过 河去呢?*/问题比较有趣,写了一下,比较繁琐些:#includeusing namespace std;int Right_Balance;//右岸的传教士与野人的平衡情原创 2006-12-06 10:49:00 · 2475 阅读 · 2 评论 -
背包问题非递归实现
#includeusing namespace std;#define N 4unsigned int S=0;unsigned int Weight[N];int main(){ cout"Plz input the "" goodss weight/n"; for(int i=0;i>Weight[i]; cout"Input the package volume/n";原创 2008-12-08 10:53:00 · 490 阅读 · 0 评论