摘要:题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=3181题目大意:输入n,和k,问将n用1到k这k个数字进行拆分,有多少种拆分方法。例如:n=5,k=3 则有n=3+2,n=3+1+1,n=2+1+1+1,n=2+2+1,n=1+1+1+1+1这5种拆分方法解题思路:这个题目是个比较明显的动态规划,如果想不到是背包问题,也可以写出状态转移方程如下:用a[i][j]表示考虑到用数j进行拼接时数字i的拼接方法,可以得到状态转移方程如下:a[i][j]=a[i][j-1]+a[i-j][j-1]+a[i-2j][j-1]+a[i-3j][j-1]…
阅读全文
摘要:背包问题 它是在1978年由Merkel和Hellman提出的。它的主要思路是假定某人拥有大量物品,重量各不同。此人通过秘密地选择一部分物品并将它们放 到背包中来加密消息。背包中的物品中重量是公开的,所有可能的物品也是公开的,但背包中的物品是保密的。附加一定的限制条件,给出重量,而要列出可能的物 品,在计算上是不可实现的。背包问题是熟知的不可计算问题,背包体制以其加密,解密速度快而其人注目。但是...
阅读全文
摘要:又是本人一份人工智能作业……首先道歉,从Word贴到Livewrter,好多格式没了,也没做代码高亮……大家凑活着看……想做个好的人机对弈的五子棋,可以说需要考虑的问题还是很多的,我们将制作拥有强大AI五子棋的过程分为十四步,让我来步步介绍。 第一步,了解禁手规则 做一个五子棋的程序,自然对五子棋需要有足够的了解,...
阅读全文
摘要:八数码的八境界 研究经典问题,空说不好,我们拿出一个实际的题目来演绎。八数码问题在北大在线测评系统中有一个对应的题,题目描述如下:EightTime Limit: 1000MS Memory Limit: 65536K Special JudgeDescriptionThe 15-puzzle h...
阅读全文
摘要:#include <iostream>#include <cstdio>#include <cstring>using namespace std;long long dp[12][3000];//用0代表横放或竖放的上部,1代表竖放的下部,每行是一个二进制数(<2048)int main(){ long long h,w,ans,i,j,k,tmp1,t...
阅读全文