学习热线

2005年软件设计师考试题目预测         ★★★
2005年软件设计师考试题目预测
学习热线网:http://www.xx988.com    来源:老顽童    点击数:    更新时间:2005-4-23

    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]);

}

 

[1] [2] 下一页  

  • 上一篇文章: 软件水平考试辅导——多媒体部分

  • 下一篇文章: 软件设计师考试复习指导:socket简要