杰拉斯的博客

归档:2012年6月月

[ACM]简单动态规划——电路布线

杰拉斯 杰拉斯 | 时间:2012-06-02, Sat | 20,198 views
编程算法 

电路布线

【问题描述】

在一块电路板的上、下两端分别有n个接线柱。根据电路设计,要求用导线(i,π(i))将上端接线柱i与下端接线柱π(i)相连,如图所示。

动态规划——电路布线

其中,π(i),1<=i<=n是{1,2,…,n}的一个排列。导线(i,π(i))称为该电路板上的第i条连线。对于任何1<=i π(j)。

在制作电路板时,要求将这n条连线分布到若干绝缘层上。在同一层上的连线不相交。你的任务是要确定将哪些连线安排在第一层上,使得该层上有尽可能多的连线。换句话说,就是确定导线集Nets={ i,π(i),1<=i<=n}的最大不相交子集。

【输入形式】

输入文件第一行为整数n;第二行为用一个空格隔开的n个整数,表示π(i)。

【输出形式】

输出文件第一行为最多的连线数m,第2行到第m+1行输出这m条连线(i,π(i))。

(阅读全文…)

[ACM]简单回溯——猜牌游戏

杰拉斯 杰拉斯 | 时间:2012-06-02, Sat | 7,346 views
编程算法 

猜牌游戏

【问题描述】

猜牌游戏:桌上有分别写着1-100的100张牌,游戏者从100张牌子中抽出K张,把K(1<K<100)张牌对应的数字相乘得到一个结果S,然后把结果S告诉挑战者,让挑战者猜游戏者K张牌的可能组合。游戏者也可能报一个假的结果S给挑战者,也就是不存在K张牌相乘得到该结果,这时挑战者要辨别游戏者是否说谎。挑战者猜中则为赢,猜错就为输。

【输入形式】

从标准输入自然数S和自然数K。

【输出形式】

输出K张牌的所有方式(用空格隔开),每一种方式为一行,在每一行末均输出一个回车符。如果不存在K张牌相乘得到S的情况,则输出LIE。

(阅读全文…)