摘要:
思路黑书上有,这两道题目,我是用同一个代码ac的,也讲讲我自己的想法吧:首先a1+a2肯定会等于一个最小的值,然后a1+a3会是次小的值,这样,我们只要求出a1的值,那么枚举a2+a3的值,只要有解,那么可以求出a1的值,将已经求出来的a1、a2、a3两两相加的值去掉,遇到的下一个最小的值就会是a1+a4了,因为a1+a2,a1+a3,a2+a3的值已经被标记了,那么第一个未被标记的值一定会是最小的a1+a4的值,这样a4也出来了,再标记a1+a4,a2+a4,a3+a4.....然后遇到的下一个未被标记的值会是a1+a5........一次类推,然是所有的值两两相加后能在他们的和里找到,说明 阅读全文
摘要:
这是黑书课后习题锁链......他们都说是递推题目,好吧,我必须得承认可以用递推做,只是我不明白他们怎么推的,现在我说说我的做法:首先,需要看一看《九连环与格雷码不得不说的故事》(这是我转载的):分析解九连环的完全记法,由于每次只动一个环,故两步的表示也只有一个数字不同。下面以五个环为例分析。左边起第一列的五位数是5个环的状态,依次由第一环到第五环。第二列是把这个表示反转次序的五位数,似乎是二进制数,但是与第四列比较就可以看出这不是步数的二进制数表示。第三列是从初始状态到这个状态所用的步数。最右边一列才是步数的二进制表示。 00000-00000-0-00000 10000-00001-1.. 阅读全文
摘要:
很恶心的模拟题.......不过编完后,有着一些收获,以后的年月日题目都可以以这个代码为模板了。注意:这道题目加日期很好编,只要注意每次在加的时候,在月的时候,先转为某个月份的最后一天,然后再去判断大于这个的月份就直接减去这个月份,在年的转化中,都将它转为****/12/31,再去一年一年的加减.......加法的测试数据:383928228378减法的时候,就要注意好多了,我一开始按照加法的细节处理来处理减法,发现各种细节错误,在月份的时候,要转为钱一个月的最后一天,就是当day “大于等于"这个月份的时候,将这个月份减去(注意,这里不同于加法),这样可以避免出现2013/02/0 阅读全文