摘要:
甲乙两人面对若干排石子,其中每一排石子的数目可以任意确定。例如图所示的初始局面:共n=3排,其中第一排的石子数a1=7,第二排石子数a2=3,第三排石子数a3=3。两人轮流按下列规则取走一些石子,游戏的规则如下:每一步必须从某一排中取走两枚石子;这两枚石子必须是紧紧挨着的;如果谁无法按规则取子,谁就是输家。 解:用符号#S,表示局面S所对应的二进制数。用符号$(x),表示局面(x)的下一步所有可能出现的局面的集合。定义集合g(x):设$(x)={S1, S2, …, Sk},则g(x)={#S1, #S2, …, #Sk}。函数f满足要求的一个充分条件f(a1)不属于集合g... 阅读全文
posted @ 2012-04-20 20:06
龙杉老师
阅读(1360)
评论(0)
推荐(0)
摘要:
11)哥德巴赫猜想: 一个大于等于4的偶数可以拆分为两个质数的和(用10e6内的数据测试一下):#include<iostream>using namespace std;#include<conio.h>#define M 1000000int p[M];bool is_prime(int n){ if(n<=1)return false; else for(int i=2;i*i<=n;i++) if(n%i==0)return false; return true;}int main(){ int n,i,j,k=0; for(i=2;... 阅读全文
posted @ 2012-04-20 13:25
龙杉老师
阅读(467)
评论(0)
推荐(0)
摘要:
将一个整数n分解成x个正整数(a1+a2+a3+...+ax=n),使它们的乘积(a1*a2*a3*...*ax)最大。答案可能很大,输出对m取模后的结果。思路一:动态规划(DP)可以很容的思考出来动态转移方程用dp[i]代表当n=i的时候的最大乘积,于是:DP[i]=max(DP[i-j]*DP[j])动态规划的方法虽然可以解决该类问题,但是当n的值非常大的时候,dp数组都很难开的下,故不管是时间复杂度还是空间复杂度都高得惊人!于是需要新的思路。思路二:按照我们数学直觉,应该不难想到,分出来的这些a1,a2,a3…应该要相等才能让他们的积最大。/*小学的时候大家应该学过同 阅读全文
posted @ 2012-04-20 10:56
龙杉老师
阅读(1158)
评论(0)
推荐(0)

浙公网安备 33010602011771号