① 关于c语言的田忌赛马问题。
应该是贪心的思路有点问题:
解题思路:
贪心算法。
如果当前最好的马可以胜齐王最好的马,那么让这两匹马比一场。
如果当前最差的马能胜齐王最差的马,那么让这两匹马比一场。
如果上面两个条件都不满足,那么让当前最差的马和齐王最好的马比一场。
② acm田忌赛马问题在线等急求!!
好晕。。田忌赛马问题可用贪心算法进行匹配。
我在这里借花敬佛:
http://blog.sina.com.cn/s/blog_5f0d09840100n7yx.html
③ 田忌赛马 de 算法
贪心就可以了..
先排序,然后比较队头,队尾,如果都不能赢就用小的碰大的
④ 关于用动态规划法求最大公共子序列的问题
#include <iostream>
#include <string>
using namespace std;
#define N 100 // 宏定义N的初始值为100
char a[N], b[N], str[N]; //a用于保存第一个输入的字符的,b用于保存第二个,str用于判断两个字符是不是都遍历到了'\0'(到了的话说明字符串处理完毕),先初始化为N
int c[N][N]; //int型数组,初始化为N,用于保存两个字符串的内容
//下面你要跟着程序的调用规律走,先看主函数调用的是build_lcs(),然后是lcs_len()
int lcs_len(char* a, char* b,int c[][N]) //用于计算两个字符串的每个元素的内容!
{
int m=strlen(a), n=strlen(b), i, j; //声明m,n,i,j变量,其中的strlen()函数是用来获取字符串长度的
for (i=0; i<=m; i++) //
c[i][0]=0; //遍历第一个字符串的内容,分别保存到c的一维数组中
for (i=0; i<=n; i++) //
c[0][i]=0; //遍历第二个字符串的内容,分别保存到c的二维数组中
for (i=1; i<=m; i++) //第一层FOR循环
{ //
for (j=1; j<=n; j++) //第二层FOR循环
{ //
//
if (a[i-1]==b[j-1]) //判断第一个字符串的第i(-1是为了去掉'\0')个元素的值等于第二个字符串第j个元素
c[i][j]=c[i-1][j-1]+1; //
else if (c[i-1][j]>=c[i][j-1]) //如果不是,则判断第一个字符数组的第i个元素与第二个字符数组所有元素相等(j循环j遍,i才循环1遍)
c[i][j]=c[i-1][j]; //
else //如果不是,则判断第一个字符数组的第j个元素与第二个字符数组所有元素相等(i循环j遍,j才循环1遍)
c[i][j]=c[i][j-1]; //
} //
} //
return c[m][n]; //得到相同的元素并返回
}
char* build_lcs(char s[],char* a,char* b)
{
int i=strlen(a), j=strlen(b);
int k=lcs_len(a,b,c);
s[k]='\0';
while (k>0) //下面都很简单了!
{
if (c[i][j]==c[i-1][j])
i--;
else if (c[i][j]==c[i][j-1])
j--;
else
{
s[--k]=a[i-1];
i--; j--;
}
}
cout<<s<<endl;
return s;
}
void main()
{
cout<<"输入两个长度小于"<<N<<"的字符串"<<endl;
cin>>a;
cin>>b;
cout<<"LCS="<<build_lcs(str,a,b)<<endl;
}
⑤ 田忌赛马 de 算法
原文:
齐使者如梁,孙膑以刑徒阴见,说齐使。齐使以为奇,窃载与之齐。齐将田忌善而客待之。忌数与齐诸公子驰逐重射。孙子见其马足不甚相远,马有上、中、下辈。于是孙子谓田忌曰:“君弟重射,臣能令君胜。”田忌信然之,与王及诸公子逐射千金。及临质,孙子曰:“今以君之下驷彼上驷,取君上驷与彼中驷,取君中驷与彼下驷。”既驰三辈毕,而田忌一不胜而再胜,卒得王千金。于是忌进孙子于威王。威王问兵法,遂以为师。
译文:
齐国使者到大梁来,孙膑以刑徒的身份秘密拜见,用言辞打动齐国使者。齐国使者觉得此人不同凡响,就偷偷地用车把他载回齐国。齐国将军田忌赏识他并像对待客人一样礼待他。田忌经常与齐国诸公子赛马,设重金赌注。孙膑发现他们的马脚力都差不多,可分为上、中、下三等。于是孙膑对田忌说:“您只管下大赌注,我能让您取胜。”田忌相信并答应了他,与齐王和诸公子用千金来赌胜。比赛即将开始,孙膑说:“现在用您的下等马对付他们的上等马,拿您的上等马对付他们的中等马,拿您的中等马对付他们的下等马。”三场比赛完后,田忌一场不胜而两场胜,最终赢得齐王的千金赌注。于是田忌把孙膑推荐给齐威王。威王向他请教兵法后,就把他当作老师。