中学生作文 语文教案 高考作文 文言文翻译 新课程改革 说课稿 诗歌散文欣赏 中考高考应考对策 语文教学论文之二 语文教学论文之三
语文教学论文之四 小学语文论文 小学语教案文 小学语文试题 小学生园地 文学欣赏 小学教师园地 小学语文课件 语文试题 数学试题
化学试题
物理试题 历史试题 政治试题 英语试题 生物试题 地理试题 其它教案 语文教案 数学教案 化学教案 物理教案
历史教案 政治教案 英语教案 生物教案 地理教案

HomeArticle        > 软件设计师(高程)      

> 2003年高级程序员题目预测


  文章内容
 

2003年高级程序员题目预测


 
 

1 一笔画问题
2 迷宫问题
3 最短路径问题(就是给出一个交通示意图,边上的数字为路的长度,
求每个结点到某个固定点的最短路程)
4 N个球称重问题吧

荷兰国旗问题????四色定理
3种颜色(0,1,2)在一个数组里,每次只可交换一次,扫描一边后,三种颜色自然分开,应为颜色

为:红,白,蓝,(荷兰国旗的颜色)所以叫它荷兰国旗问题(也是他老人家的国籍)!
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

#define N 15

int main(int argc, char* argv[])
{
char array[N];
char t,*p_red_end,*p_write_end,*p_blue_head; //分别为红色的尾指针、白色的尾指

针、蓝色的首指针
int i;

srand( (unsigned)time( NULL ) );
for(i=0;i<N;i++)
{
switch (rand()%3)
{
case 0:
array='r';
break;
case 1:
array='w';
break;
default:
array='b';
}
printf("%c ",array);
}
printf("\n";

for(p_red_end=p_write_end=array,p_blue_head=array+14;p_write_end<=p_blue_head
switch (*p_write_end)
{
case 'r':
t=*p_red_end;
*p_red_end=*p_write_end;
*p_write_end=t;
p_red_end++;
p_write_end++;
break;
case 'b':
t=*p_write_end;
*p_write_end=*p_blue_head;
*p_blue_head=t;
p_blue_head--;
break;
default:
p_write_end++;
}
for(i=0;i<N;i++)
printf("%c ",array);
}
运行结果是:
rrrwwrwwrwbbbbb

这个结果是荷兰国旗算法的结果吗?(我不清楚荷兰国旗算法)
题目最终要求的结果应该是:红,白,兰,红,白,兰,红,白,兰……还是:红,红,红,红,红,白
,白,白,白,蓝,蓝,蓝,蓝,蓝……?

#include "stdio.h"
#define k 15 /*假定数组有15个数*/
char a[k]={'r','w','b','r','r','b','w','w','b','b','b','w','r','r','w'}; /*r,b,w代表红,

蓝,白*/

main()
{int i,ii;
char t;
int m,n,p;
m=0; /*m为红色末尾指针*/
n=0; /*n为白色末尾指针*/
p=14;/*p为蓝红色头指针*/
for (ii=0;ii<15;ii++)
printf("%c",a[ii]);
while(n<=p)
{
if (a[n]=='r') {t=a[n];a[n]=a[m];a[m]=t;m++;n++;}
else if (a[n]=='w') n++;
else {
t=a[n];a[n]=a[p];a[p]=t;p--;n++;
if (a[n-1]=='r') {t=a[n-1];a[n-1]=a[m];a[m]=t;m++;}
}

for (i=0;i<15;i++)
prinrf("%s",a[n]);

}


货郎问题????


一笔画问题
const max=6;{顶点数为6}
type shuzu=array[1..max,1..max]of 0..max;
const a:shuzu {图的描述与定义 1:连通;0:不通}
=((0,1,0,1,1,1),
(1,0,1,0,1,0),
(0,1,0,1,1,1),
(1,0,1,0,1,1),
(1,1,1,1,0,0),
(1,0,1,1,0,0));
var
bianshu:array[1..max]of 0..max; {与每一条边相连的边数}
path:array[0..1000]of integer; {记录画法,只记录顶点}
zongbianshu,ii,first,i,total:integer;

procedure output(dep:integer); {输出各个顶点的画法顺序}
var sum,i,j:integer;
begin
inc(total);
writeln('total:',total);
for i:=0 to dep do write(Path);writeln;
end;


function ok(now,i:integer;var next:integer):boolean;{判断第I条连接边是否已行过}
var j,jj:integer;
begin
j:=0; jj:=0;
while jj<>i do begin inc(j);if a[now,j]<>0 then inc(jj);end;
next:=j;
{判断当前顶点的第I条连接边的另一端是哪个顶点,找出后赋给NEXT传回}
ok:=true;
if (a[now,j]<>1) then ok:=false; {A[I,J]=0:原本不通}
end; { =2:曾走过}

procedure init; {初始化}
var i,j :integer;
begin
total:=0; {方案总数}
zongbianshu:=0; {总边数}
for i:=1 to max do
for j:=1 to max do
if a[i,j]<>0 then begin inc(bianshu);inc(zongbianshu);end;
{求与每一边连接的边数bianshu}
zongbianshu:=zongbianshu div 2; {图中的总边数}
end;

procedure find(dep,nowpoint:integer); {dep:画第几条边;nowpoint:现在所处的顶点}
var i,next,j:integer;
begin
for i:=1 to bianshu[nowpoint] do {与当前顶点有多少条相接,则有多少种走法}
if ok(nowpoint,i,next) then begin {与当前顶点相接的第I条边可行吗?}
{如果可行,其求出另一端点是NEXT}
a[nowpoint,next]:=2; a[next,nowpoint]:=2; {置成已走过标志}
path[dep]:=next; {记录顶点,方便输出}
if dep < zongbianshu then find(dep+1,next) {未搜索完每一条边}
else output(dep);
path[dep]:=0; {回溯}
a[nowpoint,next]:=1; a[next,nowpoint]:=1;
end;

begin
init; {初始化,求边数等}
for first:=1 to max do {分别从各个顶点出发,尝试一笔画}
fillchar(path,sizeof(path),0);
path[0]:=first; {记录其起始的顶点}
writeln('from point ',first,':');readln;
find(1,first); {从起始点first,一条边一条边地画下去}
end.


银行家算法其实是很普通的但是比较经典的算法,每本OS的书上都讲的,主要用来防止产生死锁的,

形象的讲:银行发放贷款(对不同的客户,有分期贷的)不能使有限可用资金匮乏而导致整个银行无

法运转,也就是说每次请求贷款时,银行要考虑他能否凭着贷款完成项目还清贷款使银行运转正常,

(借用flyingcoolhwak写的步骤)
令Request(i)是进程P(i)请求向量,如果Request(i)[j]=k,则进程P(i)希望请求j类资源k个。
算法步骤如下:
1、如果Request(i)>Need(i)则出错(请求量超过申报的最大量),否则转2、
2、如果Requdst(i)>Available则P(i)等待,否则转3、
3、系统对P(i)所请求的资源实施试探分配,更改数据结构中的数值
4、Available<-Available-Request(i)
Allocation(i)<-Allocation(i)+Request(i)
Need(i)<-Need(i)-Request(i)
5、执行安全性算法(如下),如果是安全的则承认试分配,否则废除试分配,让进程P(i)等待

货郎担问题

问题描述
欧几里德货郎担问题是对平面给定的n个点确定一条连结各点的、闭合的游历路线问题。图1(a)给出了七个点问题的解。Bitonic旅行路线问题是欧几里德货郎担问题的简化,这种旅行路线先从最左边开始,严格地由左至右到最右边的点,然后再严格地由右至左到出发点,求路程最短的路径长度。图1(b)给出了七个点问题的解。

请设计一种多项式时间的算法,解决Bitonic旅行路线问题


 
State

学科试题测试
教学知识小品
教学心得随笔之一
教育教学论文
教学设计教案
教学心得随笔之二
教学心得随笔之三
工科论文
管理学论文
公共管理论文
经济学论文
法律论文
政治学论文
会计审计论文
艺术论文
其它类论文
证券金融论文
论文指导
财政税收论文
工商管理论文
财务管理论文
计算机论文
医学论文
哲学论文
教育论文
少儿英语
综合英语
考研&MBA
国内考试
企业法律顾问
小语种
出国考试
学习顾问
IT培训
管理培训
商务英语
会计考试
英语考试
司法考试
英语口语
导游员考试
自学考试
公务员考试
报关员考试
CET考试综合信息
CET四级考试
CET六级考试
PETS考试
等级考试综合信息
计算机等级一级考试
计算机等级二级考试
计算机等级三级考试
计算机等级四级考试
全国计算机NIT考试
软考试综合信息
数据库系统工程师
网络管理(程序)员
程序员级
网络设计师
软件设计师(高程)
系统分析师
 


Copyright www.schoolscn.com All rights reserved. ICP备05047758号