??xml version="1.0" encoding="utf-8" standalone="yes"?> 二、删除一个单w表的最中间的元素,要求旉可能短Q不能用两ơ@环) 三、输入nQ求一个n*n矩阵Q规定矩阉|45度线递增(威盛) 四、打??000的整敎ͼ不能使用程控制语句(for,while,goto{?也不能用递归 五、struct S { 分析Q?nbsp; #include <cstdlib> using namespace std; 转一个经典的题目Q?/font> l一个天q?问如何用3ơ把q个球扑և? W一l?nbsp; codeQ?br>/* if( lPos%2 == 0 ) #define MAX_BUFFER_LENGTH 100 5.如果存在两个变量Qa和bQ不使用“if”?#8220;?:”?“switch”和其它的判断语句Q找Z个数中的最大倹{?br> {案Q? ( a + b ) + abs( a - b ) ) / 2 6. 写一个函数找Z个整数数l中Q第二大的数 QmicrosoftQ?br> const int MINNUMBER = -32767 ;
一、如何判断一个单链表是有环的Q(注意不能用标志位Q最多只能用两个额外指针Q?br> struct node { char val; node* next;}
bool check(const node* head) {} //return false : 无环Qtrue: 有环
一UOQnQ的办法是Q搞两个指针Q一个每ơ递增一步,一个每ơ递增两步Q如果有环的话两者必焉合,反之亦然Q:
bool check(const node* head)
{
if(head==NULL)
return false;
node *low=head, *fast=head->next;
while(fast!=NULL && fast->next!=NULL)
{
low=low->next;
fast=fast->next->next;
if(low==fast)
return true;
}
return false;
}
struct link
{
int data;
struct link *next;
};
void delMiddle(link *head)
{
if(head == NULL)
return;
else if(head->next == NULL)
{
delete head;
return;
}
else
{
link *low = head;
link *fast = head->next;
while(fast != NULL && fast->next != NULL)
{
fast = fast->next->next;
if(fast == NULL)
break;
low = low->next;
}
link *temp = low->next;
low->next = low->next->next;
delete temp;
}
}
int main()
{
struct link *head,*l;
struct link *s;
head = (link*)malloc(sizeof(link));
head->data=0;
head->next = NULL;
l = head;
for(int i=1; i<9; i++)
{
s = (link*)malloc(sizeof(link));
s->data = i;
s->next = NULL;
l->next= s;
l = l->next;
}
print(head);
delMiddle(head);
print(head);
return 0;
}
/**
* 得到如下样式的二l数l?br>* zigzagQjpeg~码里取象素数据的排列顺序)
*
* 0, 1, 5, 6,14,15,27,28,
* 2, 4, 7,13,16,26,29,42,
* 3, 8,12,17,25,30,41,43,
* 9,11,18,24,31,40,44,53,
* 10,19,23,32,39,45,52,54,
* 20,22,33,38,46,51,55,60,
* 21,34,37,47,50,56,59,61,
* 35,36,48,49,57,58,62,63
*/
void zigzag(int n)
{
int **a =(int**) malloc(n*sizeof(int *)); //分配I间
if(NULL == a)
return ;
int i;
for(i = 0; i < n; i++) {
if((a[i] =(int*) malloc(n * sizeof(int))) == NULL) {
while(--i>=0)
free(a[i]);
free(a);
return;
}
}
bool flag = false; //q个标志位用来判断是?5度角生成q是225度角生成
int count = 0;
for(i=0; i<n; i++) //生成的上半部分的数据
{
if(flag)
{
for(int r = 0; r<=i; r++)
{
a[r][i-r] = count;
count++;
}
flag = false;
}
else
{
for(int r = i; r>=0; r--)
{
a[r][i-r] = count;
count++;
}
flag = true;
}
}
for(i=n-1; i>=0; i--) //生成的是下半部分的数?br> {
// cout<<i<<endl;
if(flag)
{
for(int r = 0; r<=i-1; r++)
{
int r1 = n-i+r; //代表当前?br> int c1 = 2*n-i-1-r1; //代表当前?br> a[r1][c1] = count;
count++;
}
flag = false;
}
else
{
for(int r = i-1; r>=0; r--)
{
cout<<"ddd"<<endl;
int r1 = n-i+r;
int c1 = 2*n-i-1-r1;
// cout<<r1<<","<<c1<<endl;
a[r1][c1] = count;
count++;
}
flag = true;
}
}
for(int r = 0; r<n; r++)
{
for(int c=0; c<n; c++)
cout<<a[r][c]<<",";
cout<<endl;
}
}
int main()
{
int n;
cin>>n;
zigzag(n);
return 0;
}
|上q有一个h写了一个比较y的算法:
/**
* 得到如下样式的二l数l?br>* zigzagQjpeg~码里取象素数据的排列顺序)
*
* 0, 1, 5, 6,14,15,27,28,
* 2, 4, 7,13,16,26,29,42,
* 3, 8,12,17,25,30,41,43,
* 9,11,18,24,31,40,44,53,
* 10,19,23,32,39,45,52,54,
* 20,22,33,38,46,51,55,60,
* 21,34,37,47,50,56,59,61,
* 35,36,48,49,57,58,62,63
*/
#include <stdio.h>
int main()
{
int N;
int s, i, j;
int squa;
scanf("%d", &N);
/* 分配I间 */
int **a = malloc(N * sizeof(int *));
if(a == NULL)
return 0;
for(i = 0; i < N; i++) {
if((a[i] = malloc(N * sizeof(int))) == NULL) {
while(--i>=0)
free(a[i]);
free(a);
return 0;
}
}
/* 数组赋?*/
squa = N*N;
for(i = 0; i < N; i++)
for(j = 0; j < N; j++) {
s = i + j;
if(s < N)
a[i][j] = s*(s+1)/2 + (((i+j)%2 == 0)? i : j);
else {
s = (N-1-i) + (N-1-j);
a[i][j] = squa - s*(s+1)/2 - (N - (((i+j)%2 == 0)? i : j));
}
}
/* 打印输出 */
for(i = 0; i < N; i++) {
for(j = 0; j < N; j++)
printf("%-6d", a[i][j]);
printf("\n");
}
return 0;
}
1.
typedef struct _test{
static int a;
_test(){
printf("%d\n",_test::a);
a++;
}
}Test;
int Test::a = 1;
int main()
{
Test tt[1000];
return 0;
}
2.
#include <stdio.h>
#define B P,P,P,P,P,P,P,P,P,P
#define P L,L,L,L,L,L,L,L,L,L
#define L I,I,I,I,I,I,I,I,I,I,N
#define I printf( "%3d ",i++)
#define N printf( "\n ")
int main()
{
int i = 1;
B;
}
?br>#define A(x) x;x;x;x;x;x;x;x;x;x;
int main ()
{
int n = 1;
A(A(A(printf ("%d ", n++))));
return 0;
}
int i;
int * p;
};
void main()
{
S s;
int * p = &s.i;
p[0] = 4;
p[1] = 3;
s.p = p;
s.p[1] = 1;
s.p[0] = 2;
}
问程序会在哪一行死掉?QmicrosoftQ?br>解: S s;
int * p = &s.i; //s.i的地址存储在p?/span>
p[0] = 4; //修改了s.i
p[1] = 3; //修改了s.p
s.p = p; //s.p指向s.i
s.p[1] = 1; //修改s.p本n
s.p[0] = 2; //s.p指向的是0x00000001,试向这里写,出错
s.p[0] = 2; 时出?
因ؓs.p存的是s.i的地址,s.p[1]为s.p,当s.p[1]=1?s.p此时存放的是1?而不是地址s.i,故在s.p[0] = 2时出?
此时相当于s.p=ox00000001;地址ox0000001 = 2;当然出错了
如果语句s.p[0] =2 先于s.p[1]=1则程序就不会出错.此时语句相当于s.i=2;s.p=1;
1. int swap(int *x,int *y)
{
if(x==NULL ¦ ¦ y==NULL)
return -1;
*x += *y;
*y = *x- *y;
*x -= *y;
return 1;
}
h错,溢出已经考虑Q不是错?
2.
void foo(int *x, int *y)
{
*x += *y;
*x += *y;
}
void fun(int *x, int *y)
{
*x += 2 * (*y);
}
问两个函数是否等P能否互换
解答Q第一题的函数是交换。但假如考虑x, y都是指向同一个变?l果是这个变量的gؓ0.
W二题的两个函数是有区别?也考虑x,y是指向同一个变?q样W一个函数的l果是这个变量的4?但第二个函数的结果是变量??/font>.
]]>
限制Q不能用stl?
要求Q完成函?nbsp;unsigned int foo(unsigned int *arr);
输入法代码Qƈl出法复杂度分析?
#include <iostream>
unsigned int foo(unsigned int *arr)
{
unsigned int p[] ={1,2,6,24,120,720,5040,40320,362880};
unsigned int i,j,c,s=p[8];//first the number is p99
for(i = 0; i < 7; i++)
for(j = i+1; j < 8; j++)
{
if(arr[i]>arr[j]) //swap two number
{
arr[i]^=arr[j];
arr[j]^=arr[i];
arr[i]^=arr[j];
}
}
i = 0;
c = 0;
while(i<8)
{
j = i+1;
while(arr[i]==arr[j])//compute the number of the repetition
{
c++;
j++;
}
s/=p[c];
c=0;
i=j;
}
return s;
}
int main()
{
unsigned int a[]={1,3,3,5,6,7,8,8,9};
cout<<"The number of permutation is: "<<foo(a)<<endl;
system("pause");
return 0;
}
q可以改q排序那部分?/font>
q且求出q个球是比其他的轻q是?
?2个球分别~号为a1,a2,a3.......a10,a11,a12.
W一步:?2球分开3拨,每拨4个,a1~a4W一拨,Cؓb1Q?nbsp;a5~a8W?拨,Cؓb2Q其余第3拨,Cؓb3Q?
W二步:b1和b2攑ֈ天^两盘上,记左盘ؓc1Q右为c2Q这时候分两中情况Q?
1.c1和c2qQ此时可以确定从a1到a8都是常球Q然后把c2拿空Qƈ从c1上拿下a4Q从a9到a12四球里随便取三球Q假设ؓa9到a11Q放到c2上。此时c1上是a1到a3Qc2上是a9到a11。从q里又分三种情况Q?
AQ天q_^衡,很简单,说明没有放上ȝa12是异球Q而到此步一q了两ơ,所以将a12随便?1个常球再UCơ,也就是第三次Q马上就可以定a12是重q是轻;
BQ?
若c1上升Q则q次U说明异球ؓa9到a11三球中的一个,而且是比常球重。取下c1所有的球,q将a8攑ֈc1上,a9取下Q比较a8和a11Q第?
ơ称Q,如果q则说明从c2上取下的a9是偏重异球,如果不^衡,则偏向哪盘则哪盘里放的就是偏重异球;
CQ若c1下降Q说明a9到a11里有一个是偏轻异球。次U情况和BcMQ所以接下来的步骤照搬B是Q?
2.c1和c2不^衡,q时候又分两U情况,c1上升和c1下降Q但是不哪U情况都能说明a9到a12是常球。这步是解题的关键。也是这个题最妙的地方?
AQc1上升Q此时不能判断异球在哪盘也不能判断是轻还是重。取下c1中的a2到a4三球放一边,c2中的a5和a6攑ֈc1上,然后常球a9攑ֈc2上。至此,c1上是a1Qa5和a6Qc2上是a7Qa8和a9。此时又分三中情况:
1Q?
如果qQ说明天q上所有的球都是常球,异球在从c1上取下a2到a4中。而且可以断定异球轻重。因为a5到a8都是常球Q而第2ơ称的时候c1是上?
的,所以a2到a4里必然有一个轻球。那么第三次U就用来从a2到a4中找到轻球。这很简单,随便拿两球放到c1和c2Q^衡则剩余的ؓ要找球,不^衡则
哪边低则哪个扄Q?
2Qc1仍然保持上升Q则说明要么a1是要扄ȝQ要么a7和a8两球中有一个是重球Q这步懂吧?
好好xQ很单的。因为a9是常球,而取下的a2到a4肯定也是常球Q还可以推出换盘攄的a5和a6也是常球。所以要么a1轻,要么a7或a8重)?
xQ还剩一ơ称的机会。只需把a7和a8放上两盘Q^衡则说明a1是要扄偏轻异球Q如果不qQ则哪边高说明哪个是偏重异球Q?
3Q如果换球称W?ơ后天^q打破Qƈ且c1降低了,q说明异球肯定在换过来的a5和a6两求中,q且异球偏重Q否则天q么^衡要么保持c1上升。确定要扄是偏重之后,a5和a6攑ֈ两盘上称W?ơ根据哪辚w可以判定a5和a6哪个是重球;
BQ?
W?ơ称后c1是下降的Q此时可以将c1看成c2Q其实以后的步骤都同AQ所以就不必要再重复叙述了。至此,不管情况如何Q用且只用三ơ就能称?2个外
观手感一模一L球中有质量不同于其?1球的偏常的球。而且在称的过E中可以判定其是偏轻q是偏重?
3.U2 合唱团在17
分钟内得赶到演唱会场Q途中必需跨过一座桥Q四个h从桥的同一端出发,你得帮助他们到达另一端,天色很暗Q而他们只有一只手늭。一ơ同时最多可以有两h
一赯桥,而过桥的时候必L有手늭Q所以就得有人把手电{带来带去,来回桥两端。手늭是不能用丢的方式来传递的。四个h的步行速度各不同,若两人同
行则以较慢者的速度为准。Bono 需? 分钟q桥QEdge 需? 分钟q桥QAdam需?5 分钟q桥QLarry 需?0
分钟q桥。他们要如何?7
分钟内过桥呢Q(有个同济的学生写文章说他当时在微软面试时是到了这道题Q最短只能做出在19分钟内过桥,微Y的h对他讲这Ll果已经是不错的
了!Q?nbsp;
A点到 B ?
1 ? q去 2 分钟 2
2 q来 4 分钟 2+2=4
10?5q去 14 分钟 4+10=14
1 q来 15 分钟 14+1=15
1 ? q去 17 分钟 15+2=17
1.烧一根不均匀的Q从头烧到尾d需?个小时。现在有若干条材质相同的l_Q问如何用烧l的Ҏ来计时一个小时十五分钟呢?
ans:三根lI开始的时候,W一根点燃两端,W二根点燃一端,W三根不?/font>?font color="#ff0000">W一根烧完(30分钟)后,点燃W二根的另一?/font>Q第二根只要15分钟可以烧完了Q第二根l烧?45分钟)后,点燃W三根子两端,W三根烧完(1时15?后,计时完成
2.你有一桶果冻,其中有黄艌Ӏ绿艌Ӏ红色三U,闭上眼睛抓取同种颜色的两个。抓取多个可以确定你肯定有两个同一颜色的果?
3.如果你有无穷多的_一?公升的提捅,一?公升的提捅,两只提捅形状上下都不均匀Q问你如何才能准称?公升的水?
4.一个岔路口分别通向诚实国和说谎国。来了两个hQ已知一个是诚实国的Q另一个是说谎国的。诚实国永远说实话,说谎国永q说谎话。现在你要去说谎国,但不知道应该走哪条\Q需要问q两个h。请问应该怎么?
5.12个球一个天qI现知道只有一个和其它的重量不同,问怎样U才能用三次找到那个球?3个呢?(注意此题q未说明那个球的重量是轻是重Q所以需要仔l考虑)
6.?个点上画10条直U,要求每条直线上至有三个?
7.在一天的24时之中Q时钟的旉、分针和U针完全重合在一L时候有几次?都分别是什么时?你怎样出来的?
8.怎么L?|木,使其中Q意两|的距ȝ{?
W二l?nbsp;
1.Z么下水道的盖子是圆的?
2.中国有多辆汽R?
3.汽车钥匙插入R门,向哪个方向旋转就可以打开车锁?
4.如果你要L中国?4个省(含自d、直辖市和港澳特区及台湾?中的M一个,你会L哪一个,Z?
5.多少个加油站才能满中国的所有汽?
6.惌你站在镜子前Q请问,Z么镜子中的媄象可以颠倒左叻I却不能颠倒上?
7.Z么在M旅馆里,你打开热水Q热水都会瞬间倾泻而出?
8.你怎样Excel的用法解释给你的奶奶?
9.你怎样重新改进和设计一个ATM银行自动取款?
10.如果你不得不重新学习一U新的计机语言Q你打算怎样着手来开?
11.如果你的生规划中打在5q内受到奖励Q那获取该项奖励的动机是什?观众是谁?
12.如果微Y告诉你,我们打算投资五百万美元来启动你的投资计划Q你开始什么样商业计划?Z?
13.如果你能够将全世界的电脑厂商集合在一个办公室里,然后告诉他们被做一件事Q那件事是什?
W三l?nbsp;
1.你让工hZ工作7天,回报是一栚w条,q个金条q_成相q的7D,你必d每天l束的时候给他们一D金条。如果只允许你两ơ把金条弄断Q你如何l你的工Z?
2.有一辆火车以每小?5公里的速度d北京直奔q州Q同时另一辆火车每时20公里的速度从广州开往北京。如果有一只鸟Q以30公里每小时的速度?
两辆火R同时启动Q从北京出发Q碰到另一辆R后就向相反的方向q回去飞Q就q样依次在两辆火车之间来回地飞,直到两辆火R盔R。请问,q只鸟共飞行了多?
的距?
3.你有四个装药丸的|子Q每个药且R有一定的重量Q被污染的药丸是没被污染的药丸的重量+1。只U量一ơ,如何判断哪个|子的药被污染了?
4.门外三个开兛_别对应室内三盏灯Q线路良好,在门外控制开x候不能看到室内灯的情况,现在只允许进门一ơ,定开兛_灯的对应关系?
5.人民币ؓ什么只????0的面?
6.你有两个|子以及50个红色弹球和50个蓝色弹球,随机选出一个罐子, 随机选出一个弹球放入罐子,怎么l出U色弹球最大的选中Z?在你的计划里Q得到红球的几率是多?
7.l你两颗6面色子,可以在它们各个面上刻?-9L一个数字,要求能够用它们拼ZQ意一q中的日期数?br>
W四l?nbsp;
W一?nbsp;. 五个L抢到?00颗宝矻I每一颗都一样大和价D城。他们决定这么分Q?br>
抽签军_自己的号?1????)
首先Q由1h出分配方案,然后大家表决Q当且仅当超q半数的人同意时Q按照他的方?br>
q行分配Q否则将被扔q大喂鲨鱼
如果1h后,再由2h出分配方案,然后剩下?行表冻I当且仅当过半数的h?br>
意时Q按照他的方案进行分配,否则被扔入大v喂鲨?br>
依此cL
条gQ每个v盗都是很聪明的hQ都能很理智地做出判断,从而做出选择?br>
问题Q第一个v盗提出怎样的分配方案才能自己的收益最大化?
W二?nbsp;. 一道关于飞机加油的问题Q已知:
每个飞机只有一个a,
飞机之间可以怺加a(注意是相互,没有加a?
一a可供一枉机绕地球飞半圈,
问题Q?br>
Z臛_一枉机绕地球一圈回到v飞时的飞机场Q至需要出动几枉?(所有飞Z同一机场起飞Q而且必须安全q回机场Q不允许中途降落,中间没有飞机?W三? 汽R加a问题
一辆蝲?00升的汽R从A开往1000公里外的BQ已知汽车每公里耗a量ؓ1升,A处有无穷多的油,其他M地点都没有aQ但该R可以在Q何地点存放a以备中{Q问从A到B最需要多a
W四? h问题
一U杯子,若在WN层被摔破Q则在Q何比N高的楼层均会_若在WM层不_则在M比M低的楼层均会_l你两个q样的杯子,让你?00层高的楼层中试Q要求用最的试ơ数扑և恰y会杯子破碎的楼层?br>
W五? 推理游戏
教授选出两个??的数Q把它们的和告诉学生Ԍ把它们的U告诉学生乙Q让他们轮流猜这两个?br>
甲说Q?#8220;我猜不出”
乙说Q?#8220;我猜不出”
甲说Q?#8220;我猜C”
乙说Q?#8220;我也猜到?#8221;
问这两个数是多少
W六? 病狗问题
一个住宅区内有100户hӞ每户人家M条狗Q每天傍晚大安在同一个地斚w狗。已知这些狗中有一部分病狗Q由于某U原因,狗的Mh无法判断自己的狗
是否是病狗,却能够分辨其他的狗是否有病,现在Q上U传来通知Q要求住户处册些病狗,q且不允许指认他人的狗是病狗(是只能判断自己?Q过?天之
后,所有的病狗都被处决了,问,一共有几只病狗?Z?
W八? 监狱里有100个房_每个戉K内有一囚犯。一天,监狱长说Q你
们狱房外有一늁Q你们在N时可以控制这个电?熄或?。每天只能有一个h出来NQƈ且防风是随机的。如果在有限旉内,你们中的某h能对我说Q?
“我敢保证Q现在每个h都已l至放q一ơ风了?#8221;我就放了你们!问囚犯们要采取什么策略才能被监狱长放?如果采用了这U策略,大致多久他们可以被释
?
W五l?nbsp;
1.某手机厂家由于设计失误,有可能造成甉|寿命比原来设计的寿命短一?不是冲放甉|?Q解x案就是免Ҏ换电池或l?0元购买该厂家新手机的折换券。请l所有已购买的用户写信告诉解x案?br>
2.一高层领导在参观某博物馆时Q向博物馆馆员小王要了一块明代的城砖作ؓU念Q按国家规定QQ何h不得博物馆收藏品变为私有。博物馆馆长需要如何写信给q位领导Q将城砖取回?br>
3.营业员小姐由于工作失误,?万元的笔记本电脑?.2万元错卖l李先生Q王姐的经理怎么写信l李先生试图钱要回?
4.l你一ƾ新研制的手机,如果你是试l的l长Q你会如何测?
5.如何为函数int atoi(const char * pstr)~写试向量?
W六l?nbsp;
1.链表和数l的区别在哪?
2.~写实现链表排序的一U算法。说明ؓ什么你会选择用这LҎ?
3.~写实现数组排序的一U算法。说明ؓ什么你会选择用这LҎ?
4.L写能直接实现char * strcpy(char * pstrDest,const char * pstrSource)函数功能的代码?br>
5.~写反{字符串的E序Q要求优化速度、优化空间?br>
6.在链表里如何发现循环链接?
7.l出z牌的一个算法,q将z好的牌存储在一个整形数l里?br>
8.写一个函敎ͼ查字W是否是整数Q如果是Q返回其整数倹{?或者:怎样只用4行代?br>
9.l出一个函数来输出一个字W串的所有排列?br>
10.L写实现void * malloc(int)内存分配函数功能一L代码?br>
11.l出一个函数来复制两个字符串A和B。字W串A的后几个字节和字W串B的前几个字节重叠?br>
12.怎样~写一个程序,把一个有序整数数l放C叉树?
13.怎样从顶部开始逐层打印二叉树结Ҏ?LE?br>
14.怎样把一个链表掉个顺?也就是反序,注意链表的边界条件ƈ考虑I链?? --
15.L写能直接实现int atoi(const char * pstr)函数功能的代?br>
-----------------------------------------------------------------------------------
W一l题{案Q?nbsp;
2)Ҏ抽屉原理Q??br>
3)3升装?3???全注?;3升装?3?????;5升倒掉;3???注入1?;3升装?3???完成(另:可用回溯法编E求?
4)问其中一人:另外一个h会说哪一条\是通往诚实国的?回答者所指的那条路必然是通往说谎国的?br>
5)12个球Q?br>
W一ơ:4Q? 如果q了Q?br>
那么剩下的球中取3攑ַ??个好球放双Q称Q?br>
如果左边重,那么取两个球UC下,哪个重哪个是ơ品Q^的话W三个重Q是ơ品Q轻的话同理
如果q了Q那么剩下一个次品,q可Ҏ需要称出次品比正品L者重
如果不^Q?br>
那么不妨讑ַ辚w双轻,Z便于说明Q将左边4颗称为重球,双4颗称球,剩下4颗称为好?br>
取重?颗,ȝ2颗放在左侧,右侧?颗好球和一颗轻?br>
如果左边?br>
U那两颗重球Q重的一个次品,q的话右边轻球次?br>
如果双?br>
U左边两颗轻球,ȝ一个次?br>
如果q?br>
U剩下两颗重球,重的一个次品,q的话剩下那颗轻球次?br>
13个球Q?br>
W一ơ:4Q?Q如果^?br>
?颗球用上面的Ҏ仍旧能找出次品,只是不能知道ơ品是重是轻
如果不^Q同上
6)
o o o
o o o
o o o
7)
23ơ,因ؓ分针要{24圈,旉才能?圈,而分针和旉重合两次之间的间隔显?gt;1时Q它们有23ơ重合机会,每次重合中秒针有一ơ重合机会,所以是23?br>
重合旉可以对照手表求出Q也可列方程求出
8)
在地球表面种树,做一个地球内接的正四面体Q内接点即ؓ所?br>
W二l?nbsp;无标准答?nbsp;
W三l?nbsp;
1. 分成1,2,4三段Q第一天给1Q第二天l?取回1Q第3天给1Q第4天给4取回1?Q第5天给1Q第6天给2取回1Q第七天l?
2. 求出火R盔R旉Q鸟速乘以时间就是鸟飞行的距?br>
3. 四个|子中分别取1,2,3,4颗药丸,U出比正帔R多少Q即可判断出那个|子的药被污?br>
4. 三个开兛_别:养I开Q开10分钟Q然后进屋,暗且凉的为开?控制的灯Q亮的ؓ开?控制的灯Q暗且热的ؓ开?控制的灯
5. 因ؓ可以?Q?Q?Q?0l合成Q何需要的货币|日常习惯?0q制
6. 题意不理?..*_*
7. 012345 0126(9)78
W四l?nbsp;都是很难的题?nbsp;
W一题:97 0 1 2 0 或?nbsp;97 0 1 0 2 (提示Q可用逆推法求?
W二题:3枉?架次Q飞法:
ABC 3架同时v飞,1/8处,ClAB加满油,Cq航Q?/4处,BlA加满油,Bq航QA到达1/2处,C从机场往另一方向起飞Q?/4处,C?
已经IaqAq_剩余沚wQ同时B从机v飞,AC?/8处同Bq_剩余沚wQ刚?枉机同时返航。所以是3枉?架次。第三题Q需要徏立数学模
?nbsp;
(提示Q严D明该模型最优比较麻烦,但确实可证,大胆猜想是解题关?
题目可归lؓ求数?nbsp;an=500/(2n+1) n=0,1,2,3......的和Sn什么时候大于等?000,解得n>6
当n=6ӞS6=977.57
所以第一个中转点v始位|距Mؓ1000-977.57=22.43公里
所以第一ơ中转之前共耗a 22.43*(2*7+1)=336.50?br>
此后每次中{耗a500?br>
所以总耗a量ؓ7*500+336.50=3836.50?br>
W四题:需要徏立数学模?br>
题目可归lؓ求自然数列的和S什么时候大于等?00Q解得n>13
W一个杯子可能的投掷楼层分别为:14Q?7Q?9Q?0Q?0Q?9Q?7Q?4Q?0Q?5Q?9Q?00
W五题:3?(可严D?
设两个数为n1Qn2Qn1>=n2Q甲听到的数为n=n1+n2Q乙听到的数为m=n1*n2
证明n1=3Qn2=4是唯一?br>
证明Q要证以上命题ؓ真,不妨先证n=7
1)必要性:
i) n>5 是显然的Q因为n<4不可能,n=4或者n=5甲都不可能回{不知道
ii) n>6 因ؓ如果n=6的话Q那么甲虽然不知?不确?+4q是3+3)但是无论?Q?q是3Q?乙都不可能说不知?m=8或者m=9的话乙说不知道是没有道理?
iii) n<8 因ؓ如果n>=8的话Q就可以n分解?nbsp;n=4+x ?nbsp;n=6+(x-2)Q那么m可以?x也可以是6(x-2)
?x=6(x-2)的必要条件是x=6即n=10Q那样n又可以分解成8+2Q所以M当n>=8Ӟn臛_可以分解成两U不同的合数之和Q这?
乙说不知道的时候,甲就没有理由马上说知道?br>
以上证明了必要?br>
2)充分?br>
当n=7Ӟn可以分解?+5?+4
昄2+5不符合题意,舍去Q容易判断出3+4W合题意Qm=12Q证?br>
于是得到n=7 m=12 n1=3 n2=4是唯一解。第六题Q??数学归纳法证?
1)若只?只病狗,因ؓ病狗Mh看不到有其他病狗Q必然会知道自己的狗是病?前提是一定存在病?Q所以他会在W一天把病狗处决?br>
2)设有k只病狗的话,会在Wk天被处决Q那么,如果有k+1只,病狗的主人只会看到k只病狗,而第k天没有h处决病狗Q病狗主人就会在Wk+1天知道自q狗是病狗Q于是病狗在Wk+1天被处决
3)?)2)得,若有n只病狗,必然在第n天被处决
W八题:
U定好一个h作ؓ报告?可以是第一个放风的?
规则如下Q?br>
1、报告hN的时候开灯ƈ数开灯次?br>
2、其他hW一ơ遇到开着灯放风时Q将灯关?br>
3、当报告人第100ơ开灯的时候,d监狱长报告,要求监狱长放?.....
按照概率大约30q后(10000?他们可以被释?br>
W五l无标准{案
W六l部分题参考答案:
4.
char * strcpy(char * pstrDest,const char * pstrSource)
{
assert((pstrDest!=NULL)&&(pstrSource!=NULL));
char * pstr=pstrDest;
while((*(pstrDest++)=*(pstrSource++))!='\0');
return pstr;
}
5.
char * strrev(char * pstr)
{
assert(pstr!=NULL);
char * p=pstr;
char * pret=pstr;
while(*(p++)!='\0');
p--;
char tmp;
while(p>pstr)
{
tmp=*p;
*(p--)=*(pstr);
*(pstr++)=tmp;
}
return pret;
癑ֺW试题:
IPD|?ip1 ip2。之间以I格分开Qip形式为X.X.X.XQ数据保存在文g中,文g不超q?k行,无序。现在要求编写算法去掉可重IPQ可重有三种形式Q包含、交叠、紧靠?
例如Q文件内容ؓQ?
10.0.0.0 10.0.0.12
10.0.0.5 10.0.0.10 ( <= 包含)
10.0.0.8 10.0.0.15 ( <= 交叠)
10.0.0.15 10.0.0.24 ( <= 紧靠)
最后输Zؓ:
10.0.0.0 10.0.0.24
**q个函数的作用是文件中的一行对应的两个数据转换成整形的数据
**比如?0.0.0.0 10.0.0.12 转换后,left=10*224,是10.0.0.0对应的整敎ͼ每个数字对应8位,right=left+12
*/
void ParseLine( char line[], size_t length, unsigned int &left, unsigned int &right)
{
size_t i;
for( i=0; i<length; i++ )
{
if ( line[i]=='.' || line[i]==' ' )//点变成0
{
line[i]=0;
}
}
char *p = (char*)&left;
char *num = line;
for( i=3; i<4; --i ) //size是size_tQ而size_t是unsigned intQ所以i=0再自减后变成了最大的整数Q@环就会终?br> {
// cout<<i<<",";
*(p+i) = strtol( num, &num ,10 );
cout<<static_cast<int>(*(p+i))<<",";
++num;
// cout<<num<<":";
}
cout<<endl;
p = (char*)&right;
for( i=3; i<4; --i )
{
*(p+i) = strtol( num, &num, 10 );
++num;
}
}
void UniqueSequence( vector<unsigned int> & uSeq, unsigned int left, unsigned int right )
{
size_t i, lPos=-1, rPos=-1;
for( i=0; i<uSeq.size(); i++ )
{
if( left <= uSeq.at(i) )
{
lPos = i;
break;
}
}
for( ;i<uSeq.size(); i++ )
{
if( right<=uSeq.at(i) )
{
rPos=i;
break;
}
}
if( lPos == -1 )
{
uSeq.push_back( left );
uSeq.push_back( right );
return;
}
{
if( uSeq.at(lPos)==left )
{
}
else
{
uSeq.insert( uSeq.begin()+lPos, left );
}
}
else
{
--lPos;
}
if( rPos == -1 )
{
uSeq.erase( uSeq.begin()+(lPos+1), uSeq.end() );
uSeq.push_back(right);
}
else if( rPos%2 == 0 )
{
if( uSeq.at(rPos)== right )
{
uSeq.erase( uSeq.begin()+(lPos+1), uSeq.begin()+(rPos+1) );
}
else
{
uSeq.erase( uSeq.begin()+(lPos+1), uSeq.begin()+rPos );
uSeq.insert( uSeq.begin()+rPos, right );
}
}
else
{
uSeq.erase( uSeq.begin()+(lPos+1), uSeq.begin()+rPos );
}
}
void PrintIP( unsigned int num )
{
char *p = (char*)#
for( size_t i=3;i>0; --i)
{
cout<< (int)p[i]<<".";
}
cout<<(int)p[0];
}
int main()
{
unsigned int left, right;
char buffer[MAX_BUFFER_LENGTH];
ifstream infile( "test.txt" );
if( infile.fail() )
{
return 0;
}
vector<unsigned int> uSeq;
while( infile.getline(buffer, MAX_BUFFER_LENGTH) )
{
ParseLine(buffer, strlen(buffer), left, right);
// cout<<left<<","<<right<<endl;
UniqueSequence( uSeq, left, right );
for( size_t i=0; i<uSeq.size(); i+=2 )
{
PrintIP(uSeq.at(i) );
cout<<" ";
PrintIP(uSeq.at(i+1));
cout<<endl;
}
cout<<endl;
}
for( size_t i=0; i<uSeq.size(); i+=2 )
{
PrintIP(uSeq.at(i) );
cout<<" ";
PrintIP(uSeq.at(i+1));
cout<<endl;
}
return 0;
}
/*long strtol( const char *nptr, char **endptr, int base ),其中nptr是以NULLl尾字符Ԍendptr是字W串停止扫描的地方(Pointer to character that stops scanQ,strtol returns the value represented in the string nptrQThe strtol function converts nptr to a long. strtol
stops reading the string nptr at the first character it cannot
recognize as part of a number. This may be the terminating null
character, or it may be the first numeric character greater than or
equal to base.
string = "-10110134932This stopped it";
l = strtol( string, &stopstring, 10 );
printf( "string = %s", string );
printf(" strtol = %ld", l );
printf(" Stopped scan at: %s", stopstring );
string = "10110134932";
printf( "string = %s\n", string );
/* Convert string using base 2, 4, and 8: */
for( base = 2; base <= 8; base *= 2 )
{
/* Convert the string: */
ul = strtoul( string, &stopstring, base );
printf( " strtol = %ld (base %d)\n", ul, base );
printf( " Stopped scan at: %s\n", stopstring );
}
打印的结果是Q?br>string = -10110134932This stopped it strtol = -2147483647 Stopped scan at: This stopped itstring = 10110134932
strtol = 45 (base 2)
Stopped scan at: 34932
strtol = 4423 (base 4)
Stopped scan at: 4932
strtol = 2134108 (base 8)
Stopped scan at: 932
*/
int find_sec_max( int data[] , int count)
{
int maxnumber = data[0] ;
int sec_max = MINNUMBER ;
for ( int i = 1 ; i < count ; i++)
{
if ( data[i] > maxnumber )
{
sec_max = maxnumber ;
maxnumber = data[i] ;
}
else
{
if ( data[i] > sec_max )
sec_max = data[i] ;
}
}
return sec_max ;
}
]]>
#include<iostream.h>
void main()
{
char* a[ ] = { "hello", "the", "world"};
char** pa = a;
pa++;
cout<<”*pa<<endl;
}
A) theworld B) the C) ello D) ellotheworld
2. 已知二叉树后序遍历序列是bfegcdaQ中序遍历序列是badefcgQ它的前序遍历序列是Q?B)
A) abcdefg B) abdcefg C) adbcfeg D) abecdfg
3. 栈和队列的共同特ҎQ?C)
A) 都是先进先出 B) 都是先进后出
C) 只允许在短点处插入和删除元素 D) 没有共同?br>
4. 下面E序的运行结果ؓQ?A)
#include <iostream.h>
void main()
{
int a, x;
for(a = 0, x = 0; a<=1 && !x++; a++)
{
a++;
}
cout<< a << x <<endl;
}
A) 21 B) 22 C) 32 D) 41
5. 下列选项Q不正确的是Q?B) while后没有分?br> A) for(int a=1; a<=10; a++);
B) int a=1;
do
{
a++;
}while(a<=10)
C) int a=1;
while(a<=10)
{
a++;
}
D) for(int a= 1; a<=10; a++)a++;
6. 下面关于数组的初始化正确的是Q?B)
A) char str[2] = {“a”,”b”};
B) char str[2][3]={“a”,”b”};
C) char str[2][3]={{‘a’,’b’},{‘e’,’d’},{‘e’,’f’}};
D) char str[] = {“a”, “b”};