摘要: 本文作者:韩申权作者博客:http://www.cnblogs.com/hsqdboke转载请注明出处,侵权必究,保留最终解释权!程序2/* 邻接表的结点类型 */typedef struct arc {int adjvex; struct arc *next;}ArcNode;typedef struct VexNode{int vertex;ArcNode *firstarc;}VerNode;typedef VerNode AdjList[MAXNODE];/* 建立图的邻接表 */void CreatAdjlist(AdjList GL)/* 从初始点v出发深度优先遍历邻接表GL表示的 阅读全文
posted @ 2012-05-23 11:25 龙杉老师 阅读(835) 评论(0) 推荐(0)
摘要: 本文作者:韩申权作者博客:http://www.cnblogs.com/hsqdboke转载请注明出处,侵权必究,保留最终解释权!程序1/* 定义邻接矩阵类型 */typedef int adjmatrix[n+1][n+1];/* 建立图的邻接矩阵 */void CreatMatrix(adjmatrix GA)/* 从初始点v出发深度优先遍历邻接矩阵GA表示的图 */void DfsMatrix(adjmatrix GA,int v)/*从初始点v出发广度优先遍历邻接矩阵GA表示的图*/void BfsMatrix(adjmatrix GA,int v)例如://2012年5月22日20: 阅读全文
posted @ 2012-05-22 21:51 龙杉老师 阅读(1572) 评论(0) 推荐(0)
摘要: 本文作者:韩申权作者博客:http://www.cnblogs.com/hsqdboke转载请注明出处,侵权必究,保留最终解释权!分别建立包含10个数据元素的顺序线性表和链式线性表;从键盘输入一个数据元素和插入位置k,将元素插入到线性表中第k(包含0号位置)个位置;从键盘输入一个数据元素关键字或位置k(包含1号位置),从线性表中删除相应数据元素;能完成查找功能;给出程序及插入、删除前和插入、删除后线性表结果。顺序表示://顺序表示#include<stdio.h>#include<stdlib.h>#include<conio.h>#define TURE 阅读全文
posted @ 2012-05-20 19:58 龙杉老师 阅读(1950) 评论(0) 推荐(0)
摘要: 本文作者:韩申权作者博客:http://www.cnblogs.com/hsqdboke转载请注明出处,侵权必究,保留最终解释权!#include<stdio.h> //' '空格代表树的元素为空#include<stdlib.h>#define OVERFLOW -1typedef char TElemType;typedef struct BitNode{ TElemType data; struct BitNode *lchild,*rchild;}BitNode,*BitTree;typedef struct QNode{ BitNode dat 阅读全文
posted @ 2012-05-20 13:28 龙杉老师 阅读(2553) 评论(0) 推荐(0)
摘要: 本文作者:韩申权作者博客:http://www.cnblogs.com/hsqdboke转载请注明出处,侵权必究,保留最终解释权!用数制的转换算法调试顺序栈的基本操作算法。编写主程序调用数制的转换conversion算法,再由conversion调用InitStack、StackEmpty、Push、Pop算法。用不同的数转换成不同的进制调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对Push和Pop算法的理解。#include<stdio.h>#include<stdlib.h>#define STACK_INIT_SIZE 100#de 阅读全文
posted @ 2012-05-19 23:55 龙杉老师 阅读(909) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1053认真读题,别怕题长,此题考查的就是哈夫曼树并求出最小编码值,注意每一次要将数组清0,否则会出错!AC代码:#include<iostream>#include<string.h>using namespace std;#define M 1000000struct node{ int l,r,data,p;}ha[100];int main(){ //freopen("d:\\1.txt","r",stdin); char s[1 阅读全文
posted @ 2012-05-05 11:15 龙杉老师 阅读(460) 评论(0) 推荐(0)
摘要: 本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2527此题考查的是哈夫曼树,构造哈夫曼树并计算出最小编码数即可。做此题的过程中,提交之后竟然TLE,很是郁闷,找了几遍,还是没找出错误,可以肯定算法是不会错的,这方面不会超时,当测试只有一个字符的时候,发现问题了,出现了死循环,因为当只有1个或一种相同的字符的时候,并没有进行构造哈弗曼数的过程,因此在下面的找最小编码数的时候,出现了死循环,这个地方需要特殊计算最小编码数。改过之后,立刻就AC了,真是感慨,不过还挺满意的,自己构造出了哈夫曼树,继续加油!\(^o^)/~AC代码如下:#include& 阅读全文
posted @ 2012-05-05 00:30 龙杉老师 阅读(664) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2068此题考查错排公式,组合数运算,正确的数目用组合,错误的情况用错排。错排公式为:F(n)=(n-1)*(F(n-1)+F(n-2));F(1)=0;F(2)=1;……AC 代码为:#include<iostream>using namespace std;__int64 a[13]={0,0,1};//只需要定义到a[13]即可,因为最大为25void fun(){ for(int i=3;i<=12;i++) a[i]=(i-1)*(a[i-1]+a[i-2]); }in.. 阅读全文
posted @ 2012-05-04 18:58 龙杉老师 阅读(404) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1134此题考查的是卡特兰数,由于卡特兰数很大,所以考虑大数处理。卡特兰数的前几项为:h(0)=1;h(1)=1;h(2)=2;h(3)=5……卡特兰数的递推公式为:h(n)=h(n-1)*(4*n-2)/(n+1);非递推公式为C(2n,n)/(n+1);此题用递推公式求解,并用到大数的乘法和大数的乘法处理,本题对卡特兰数的前100项做了预处理:AC代码如下:#include<iostream> //卡特兰数求法 递推公式h(n)=h(n-1)*(4*n-2)/(n-1)using na 阅读全文
posted @ 2012-05-03 22:26 龙杉老师 阅读(993) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1431此题可先求10^8以内的最大回文素数,大概用时250秒- -,求得最大回文素数为:9989899,代码如下:// Note:Your choice is C++ IDE#include <iostream>using namespace std;#include<time.h>#include<math.h>int is_p(int n){ int i,m; m=(int)(sqrt(n*1.0)); for(i=2;i<=m;i++) if(n%i= 阅读全文
posted @ 2012-05-03 16:46 龙杉老师 阅读(311) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1215由于此题的测试数据可能有500000个,就想到用预处理法把结果都算出来存到数组中,然而将会超时,可能原因是其测试数据没有500000组,所以不一定都得用预处理法处理。用筛选法处理也会超时。因此可以考虑直接求解,其中一定要先开根号得出结果,在带入循环条件,否则会超时。预处理代码:超时#include<iostream>using namespace std;#include<time.h>#include<math.h>int a[500005]={0};vo 阅读全文
posted @ 2012-05-03 14:25 龙杉老师 阅读(898) 评论(1) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1262用筛选法求稍微方便一些:#include<iostream>using namespace std;#include<math.h>#define M 10005int a[M+1]={1,1};void is_prime() //预处理{ int m=(int)(sqrt(M*1.0)); for(int i=2;i<=m;i++) if(a[i]==0) for(int j=i*i;j<=M;j+=i) a[j]=1; }int main(){ ... 阅读全文
posted @ 2012-05-02 17:14 龙杉老师 阅读(363) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2054此题卡数据,卡爆所有数据,例如下面数据包括其他的都得成立:0012. 12..25 .25000. . 12.1000001 0012.1000001000001200 0001200012. 012.0000.025 0000.02500000000000000000000000000000000.0 0..0 .000000000000000000000000000001 1.0000000000000000000000005. 05.00000000000000第一次提交居然WA,实在无 阅读全文
posted @ 2012-04-30 19:09 龙杉老师 阅读(470) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2093本题即为字符串处理以及sscanf函数以及排序的应用.sscanf函数的应用对此题有了很大帮助,方便快捷的得到字符串中的整形数据。要先对姓名按字典排序,以应对AC的题数和罚时都相同的情况。AC代码:#include<iostream>using namespace std;#include<string.h>char s[1000][15]={0};int A[1000]={0},B[1000]={0};int main(){ //freopen("d:\\1 阅读全文
posted @ 2012-04-30 11:23 龙杉老师 阅读(437) 评论(0) 推荐(0)
摘要: 有一块椭圆的地,你可以在边界上选n个点,并两两连接得到n(n-1)/2条线段。它们最多能把土地分成多少个部分?解:最优方案是不让三条线段交与1点。欧拉公式:V-E+F=2.其中V是顶点(即所有线段的断点数加上交点数),E是边数(即n段椭圆弧加上这些线段被切成的段数),F是面数(即土地块数加上椭圆外那个无穷大的面)。换句话说,只需求出V和E,答案就是E-V+1;不管是定点还是边,计算时都要枚举一条从固定点出发(所以最后要乘以n)的所有对角线。假设该对角线左边有i个点,右边有n-2-i个点,则左右两边的点两两搭配后在这条对角线上形成了i*(n-2-i)个焦点,得到了i*(n-2-i)+1条线段。注 阅读全文
posted @ 2012-04-29 13:26 龙杉老师 阅读(1022) 评论(0) 推荐(0)
摘要: 果园里的树排列成矩阵。他们的x和y的坐标均是1~99的整数。输入若干个三角形,依次统计每个三角形内部和边界上共有多少棵树。输入:1.5 1.5 1.5 6.8 6.8 1.510.7 6.9 8.5 1.5 14.5 1.5此题用三角形有向面积来解,求有向面积2倍的函数为:double area(double x0,double y0,double x1,double y1,double x2,double,y2){ return x0*y1+x2*y0+x1*y2-x0*y2-x1*y0-x2*y1;}若求其面积,即没有方向的:则为fabs(S)/2;可以用行列式来记... 阅读全文
posted @ 2012-04-29 13:03 龙杉老师 阅读(854) 评论(0) 推荐(0)
摘要: HDU1757题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757这道题做了一下午- -,主要是卡在了矩阵构造上,该题的数据为( k<2*10^9 , m < 10^5 ),k很大,可以看出递推求出每一个f(k)肯定会超时的,所以想到了矩阵连乘,再运用二分法求解,够早的矩阵如下:(f(9),f(8),f(7),f(6),f(5),f(4),f(3),f(2),f(1),f(0))*=(f(10),f(9),f(8),f(7),f(6),f(5),f(4),f(3),f(2),f(1));所以求f(10)只需求(f(9),f(8),f 阅读全文
posted @ 2012-04-26 22:11 龙杉老师 阅读(933) 评论(0) 推荐(0)
摘要: 二分法数学的魅力:幂运算满足结合律n为偶数: a^n=a^(n/2)*a^(n/2);n为奇数: a^n=a^(n/2)*a^(n/2)*a;保存a^(n/2),很容易求出a^n; 大数取模(a*b)%m=(a%m*b%m )%m;求(2^100000000000000)%10000;提示:二分法,速度惊人的快速幂!!!此题一般的数代码如下:#include<iostream>using namespace std;#include<math.h>__int64 fun(__int64 m,__int64 n,__int64 k){ __int64 s; if(n==1 阅读全文
posted @ 2012-04-25 23:52 龙杉老师 阅读(786) 评论(0) 推荐(0)
摘要: 所谓整数拆分即把整数分解成若干整数的和(相当于把n个无区别的球放到n个无标志的盒子,盒子允许空,也允许放多于一个球)。整数拆分成若干整数的和,办法不一,不同拆分法的总数叫做拆分数。母函数法求一个整数的拆分:#include <iostream> //母函数法求一个整数的划分using namespace std;int c2[1000],c1[1000];int main(){ int n; while(1) { cin>>n; int i,j,k; for(i=0;i<=n;i++) { c2[... 阅读全文
posted @ 2012-04-24 00:08 龙杉老师 阅读(444) 评论(0) 推荐(0)
摘要: 分治分治法是将一个规模为n的问题分解为k个规模较小的子问题。注意:这里的子问题一定是相互独立且与原问题相同。用递归的方法解这些子问题。然后将各子问题的解合并到原问题的解。二分查找算法是运用分治的典型例子分治-二分查找给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x。分析据此容易设计出二分搜索算法:在 a[0] <= a[1] <= ... <= a[n-1] 中搜索 x, 找到x时返回其在数组中的位置,否则返回-1int binarySearch(int a[], int x, int n){ int left = 0; int right = 阅读全文
posted @ 2012-04-23 23:15 龙杉老师 阅读(1041) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1536只要构造好SG函数就行:AC代码:#include<iostream>using namespace std;#include<string.h>int a[110],k; //k为全局变量int sg[10010],flag[110];void SG() //SG函数{ int i,j; for(i=0;i<=10000;i++) { memset(flag,0,sizeof(flag)); for(j=0;j<k;j++) ... 阅读全文
posted @ 2012-04-21 23:49 龙杉老师 阅读(285) 评论(0) 推荐(0)
摘要: 小于x且与x互素的正整数的个数如果x为素数,则欧拉函数等于x-1求法:将x分解为p1^n1*p2^n2*…pk^nk,则欧拉函数=x*(1-1/p1)*(1-1/p2)…*(1-1/pk);代码如下:#include<iostream>using namespace std;#include<string.h>#include<math.h>#define M 10000int p[M],a[M+1],p1[M];void prime(){ memset(a,0,sizeof(a)); int i,j,k=0,m; m=(int)(sqrt(M*1.0)); 阅读全文
posted @ 2012-04-21 15:47 龙杉老师 阅读(213) 评论(0) 推荐(0)
摘要: 已知n=p1^a1*p2^a2…*pk^ak,(也就是n的素数分解),求n的约数个数。分析:n的约数一定包含素因子中的某几项,对于n的某个素因子pi,它在约数中的指数可以是0,1,2…ai共ai+1种情况,根据乘法原理:n的约数个数=(a1+1)*(a2+1)…*(ak+1)自己写的代码如下:#include<iostream>//求n以内的公约数的个数using namespace std;#include<string.h>#include<math.h>#define M 10000int p[M],a[M+1],b[M],c[M];void prim 阅读全文
posted @ 2012-04-21 14:43 龙杉老师 阅读(1011) 评论(0) 推荐(0)
摘要: ^^^转载请注明出处~~~The Sprague-Grundy theory of impartial games公平游戏的Sprague-Grundy定理公平游戏是一种双人游戏,在游戏中双方都有完整的信息,没有牵涉,任何状态的合法操作对双方来说都是相同的。一个公平游戏可以抽象地用一个有向无环图来表示,这个图中每个点都对应这一个状态,每条有向边代表从一个状态到另一个状态的合法操作。我们可以想象一个代币最初放在某个点上,然后两个玩家轮流将其从当前的点移动到它的后继点。当代币移动到汇点时游戏结束,汇点是一个没有出度的点,最后一个需要操作的玩家就是胜者。P- 和 N-状态如果双方都按照最佳策略进行游 阅读全文
posted @ 2012-04-21 09:58 龙杉老师 阅读(6114) 评论(0) 推荐(2)
摘要: 甲乙两人面对若干排石子,其中每一排石子的数目可以任意确定。例如图所示的初始局面:共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 龙杉老师 阅读(1361) 评论(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 龙杉老师 阅读(468) 评论(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 龙杉老师 阅读(1159) 评论(0) 推荐(0)
摘要: —对于一个B进制的数,只需要对其取以B的对数就可以得到他在B进制情况下的位数(取了对数之后可能为小数,所以还需要取整后再+1) —N!的位数就是[lg(N!)]+1=[lg(1)+lg(2)+…+lg(N)]+1 —=(int)ceil[(n*ln(n)-n+0.5*ln(2*n*π))/ln(10)]/*ceil是向上取整,[]符号为取整*/ —最后一个式子被称为斯特林公式例如:#include <iostream>using namespace std;#define pi 3.141592657#include<math.h>int main(){ int n; 阅读全文
posted @ 2012-04-19 23:55 龙杉老师 阅读(1352) 评论(0) 推荐(0)
摘要: —分解素因子(数论) —Description —假设x是一个正整数,它的值不超过65535( 1< x <=65535 ),请编写一个程序,将x分解为若干个素数的乘积。 —Input —输入的第一行含一个正整数k (1 <= k <= 65535 ),表示测试例的个数,后面紧接着k行,每行对应一个测试例,包含一个正整数x。—Output —每个测试例对应一行输出,输出x的素数乘积表示式,式中的素数从小到大排列,两个素数之间用“*”表示乘法。 —Sample Input —2 11 9828 —Sample Output —11 2*2*3*3*3*7*13解:#inc 阅读全文
posted @ 2012-04-19 22:20 龙杉老师 阅读(379) 评论(0) 推荐(0)
摘要: Big Event in HDUProblem DescriptionNowadays, we all know that Computer College is the biggest department in HDU. But, maybe you don't know that Computer College had ever been split into Computer College and Software College in 2002.The splitting is absolutely a big event in HDU! At the same time 阅读全文
posted @ 2012-04-18 22:00 龙杉老师 阅读(209) 评论(0) 推荐(0)
摘要: Holding Bin-Laden Captive!We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But recently, it is reported that he hides in Hang Zhou of China!“Oh, God! How terrible! ”Don’t be so afraid, guys. Although he hides in a cave of Hang Zhou, he dares not to go out. 阅读全文
posted @ 2012-04-18 19:20 龙杉老师 阅读(232) 评论(0) 推荐(0)
摘要: Square CoinsProblem DescriptionPeople in Silverland use square coins. Not only they have square shapes but also their values are square numbers. Coins with values of all square numbers up to 289 (=17^2), i.e., 1-credit coins, 4-credit coins, 9-credit coins, ..., and 289-credit coins, are available i 阅读全文
posted @ 2012-04-18 15:53 龙杉老师 阅读(326) 评论(0) 推荐(0)
摘要: 排列组合Problem Description有n种物品,并且知道每种物品的数量。要求从中选出m件物品的排列数。例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB","BA"两种。Input每组输入数据有两行,第一行是二个数n,m(1<=m,n<=10),表示物品数,第二行有n个数,分别表示这n件物品的数量。Output对应每组数据输出排列数。(任何运算不会超出2^31的范围)Sample Input2 2 1 1Sample Output2解:指数型母函数的应用#include<iostream>#includ 阅读全文
posted @ 2012-04-18 09:35 龙杉老师 阅读(590) 评论(0) 推荐(0)
摘要: 母函数分为:普通型母函数,指数型母函数。普通型母函数主要是来求组合的方案数,而指数型母函数是求多重排列数。关于普通型母函数的讲解,以前写过:http://www.cnblogs.com/hsqdboke/archive/2012/04/17/2453677.html指数型母函数主要是关于排列组合方面的问题。分别看两个比较典型的问题对比:普通母函数问题:有红球两个,白球、黄球各一个,试求有多少种不同的组合方案。指数型母函数问题:假设有8个元素,其中a1重复3次,a2重复2次,a3重复3次。从中取r个组合,求其排列数。下面是指数型母函数的定义:对于上面的问题“假设有8个元素,其中a1重复3次,a2 阅读全文
posted @ 2012-04-17 20:58 龙杉老师 阅读(3112) 评论(0) 推荐(0)
摘要: Ignatius and the Princess IIIProblem Description"Well, it seems the first problem is too easy. I will let you know how foolish you are later." feng5166 says."The second problem is, given an positive integer N, we define an equation like this:N=a[1]+a[2]+a[3]+...+a[m];a[i]>0,1<=m 阅读全文
posted @ 2012-04-17 20:08 龙杉老师 阅读(178) 评论(0) 推荐(0)
摘要: 母函数详解在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。对每个序列都可以写出以上每个类型的一个母函数。构造母函数的目的一般是为了解决某个特定的问题,因此选用何种母函数视乎序列本身的特性和问题的类型。这里先给出两句话,不懂的可以等看完这篇文章再回过头来看:1.“把组合问题的加法法则和幂级数的乘幂对应起来”2.“母函数的思想很简单 — 就... 阅读全文
posted @ 2012-04-17 15:04 龙杉老师 阅读(3472) 评论(0) 推荐(0)
摘要: ^^^转载请注明出处,谢谢合作O(∩_∩)O~Be the WinnerLet's consider m apples divided into n groups. Each group contains no more than 100 apples, arranged in a line. You can take any number of consecutive apples at one time.For example "@@@" can be turned into "@@" or "@" or "@ 阅读全文
posted @ 2012-04-17 08:53 龙杉老师 阅读(607) 评论(0) 推荐(0)
摘要: ^^^转载请注明出处,谢谢合作O(∩_∩)O~JohnProblem DescriptionLittle John is playing very funny game with his younger brother. There is one big box filled with M&Ms of different colors. At first John has to eat several M&Ms of the same color. Then his opponent has to make a turn. And so on. Please note that 阅读全文
posted @ 2012-04-17 00:13 龙杉老师 阅读(345) 评论(0) 推荐(0)
摘要: ^^^转载请注明出处,谢谢合作O(∩_∩)O~取石子游戏 Problem Description1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win".Input输入有多组.每组第1行是2<=n<2^31. n=0退出.Output先取者负输出"Second win". 先取者胜输出"First win".参看Sample Output.Sample Input 阅读全文
posted @ 2012-04-16 23:24 龙杉老师 阅读(212) 评论(0) 推荐(0)
摘要: ^^^转载请注明出处,谢谢合作O(∩_∩)O~取(2堆)石子游戏Problem Description有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。如果你胜,你第1次怎样取子?Input输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,且a<=b。a=b=0退出。 阅读全文
posted @ 2012-04-15 20:21 龙杉老师 阅读(410) 评论(0) 推荐(0)