主题:1
6yangweihua
[专家分:180] 发布于 2006-03-27 20:04:00
回溯:分派整数1、2、3……8给以下各方框,并保证没有两个相邻的方框(垂直相邻,斜对角相邻或水平相邻)含有连续的整数。写一个程序,找出所有的分派方案。
回复列表 (共5个回复)
沙发
6yangweihua [专家分:180] 发布于 2006-03-27 20:05:00
以下列方式向5X5矩阵中填入数字。设数字I(1<=I<=25)已被置于座标位置(X,Y),则数字I+1的座标位置应为(E,W),(E,W)可根据以下关系由(X,Y)算出:
(1)(E,W)=(X±3,Y);
(2)(E,W)=(X,Y±3);
(3)(E,W)=(X±2,Y±2)。
板凳
6yangweihua [专家分:180] 发布于 2006-03-27 20:06:00
分治策略:求N个数A1,A2,A3……AN中的最大值MAX和最小值MIN。
分析:分治策略是指这样一种算法:把一个大问题分解成若干个小问题,比如:计算教室面积时,可把它分成若干小块,分别计算面积后再相加。步骤为:分割——求解——合并,共三步。
该题如果N等于1时,MAX=MIN=A1,如果N=2时,MAX=A1,MIN=A2或MAX=A2,MIN=A1,这是非常简单的,所以此题可把所有的数作为一个序列,每次从中取出开头两个数,求共MAX,MIN,然后再从剩余的数中取开头两个数,求其MAX、MIN后与前一次的MAX、MIN比较,可得出新的MAX、MIN,这样重复下去,直到把所有的数取完(注意最后一次取可能是只有一个数),MAX,MIN也就得到了。这就是典型的分治策略。注意:这样做与把所有数字排序后再取MAX、MIN要快得多。
(2)找出N个整型元素中的第K个最小元素。
当然,此题用排序方法做也要花不少时间,如果用分治策略,可这样考虑:按某个元素M(称为分划元素)把这N个元素分成3个子序列,S1中存放小于M的数,S2中存放等于M的数,S3中存放大于M的数。我们可以很容易地知道这三个子序列中元素的个数,即可以确定我们要找的第K个最小元素在哪个子序列中。这样,就等于是让我们再在某个子序列中找某个数,把一个大问题划成了小问题了,递归地做下去,最后就能找到第K个最小元素。分划元素可简单地取序列中的第一个数。
3 楼
6yangweihua [专家分:180] 发布于 2006-03-27 20:07:00
有N(键盘输入)个人在一个水笼头前排队接水,每个人接水的时间为T1,T2……TN(由键盘输入)。编程找到一种这N个人排队的顺序,使总等待时间和最小。
5、有N根钢管,长度分别为L1,L2……LN(均由键盘输入),现要把所有钢管焊成一整根,已知每次只能把两根钢管焊成一根,所需时间为两根钢管时间和,问怎样焊才能使所花时间最短。
4 楼
zhaoren [专家分:420] 发布于 2006-04-01 17:00:00
你都说完了,我还说什么?
5 楼
6yangweihua [专家分:180] 发布于 2006-04-03 19:38:00
写出程序~~~拜托
我来回复