2012年7月11日

田忌赛马(动态规划)

摘要: 时限:1000ms 内存限制:10000K 总时限:3000ms描述:田忌与齐王赛马,双方各有n匹马参赛(n<=100),每场比赛赌注为1两黄金,现已知齐王与田忌的每匹马的速度,并且齐王肯定是按马的速度从快到慢出场,现要你写一个程序帮助田忌计算他最好的结果是赢多少两黄金(输用负数表示)。输入:多个测例。 每个测例三行:第一行一个整数n,表示双方各有n匹马;第二行n个整数分别表示田忌的n匹马的速度;第三行n个整数分别表示齐王的n匹马的速度。 n=0表示输入结束。输出:每行一个整数,田忌最多能赢多少两黄金。输入样例:392 83 7195 87 74220 2020 20220 1922 1 阅读全文

posted @ 2012-07-11 22:47 IThinktan 阅读(2998) 评论(0) 推荐(0) 编辑

计算矩阵连乘积(动态规划)

摘要: 时限:1000ms 内存限制:10000K 总时限:3000ms描述:在科学计算中经常要计算矩阵的乘积。矩阵A和B可乘的条件是矩阵A的列数等于矩阵B的行数。若A是一个p×q的矩阵,B是一个q×r的矩阵,则其乘积C=AB是一个p×r的矩阵。计算C=AB总共需要p×q×r次乘法。 现在的问题是,给定n个矩阵{A1,A2,…,An}。其中Ai与Ai+1是可乘的,i=1,2,…,n-1。 要求计算出这n个矩阵的连乘积A1A2…An最少需要多少次乘法。输入:输入数据的第一行是一个整数n(0 < n <= 10),表示矩阵的个数。 接下来的n行 阅读全文

posted @ 2012-07-11 18:24 IThinktan 阅读(5023) 评论(0) 推荐(0) 编辑

防卫导弹(动态规划)

摘要: 时限:1000ms 内存限制:10000K 总时限:3000ms描述:一种新型的防卫导弹可截击多个攻击导弹。它可以向前飞行,也可以用很快的速度向下飞行,可以毫无损伤地截击进攻导弹,但不可以向后或向上飞行。但有一个缺点,尽管它发射时可以达到任意高度,但它只能截击比它上次截击导弹时所处高度低或者高度相同的导弹。现对这种新型防卫导弹进行测试,在每一次测试中,发射一系列的测试导弹(这些导弹发射的间隔时间固定,飞行速度相同),该防卫导弹所能获得的信息包括各进攻导弹的高度,以及它们发射次序。现要求编一程序,求在每次测试中,该防卫导弹最多能截击的进攻导弹数量,一个导弹能被截击应满足下列两个条件之一:a)它是 阅读全文

posted @ 2012-07-11 16:48 IThinktan 阅读(1366) 评论(0) 推荐(1) 编辑

最长公共子序列(动态规划)

摘要: 时限:1000ms 内存限制:200000K 总时限:3000ms描述:一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=<x1, x2,…, xm>,则另一序列Z=<z1, z2,…, zk>是X的子序列是指存在一个严格递增的下标序列 <i1, i2,…, ik>,使得对于所有j=1,2,…,k有:Xij = Zj如果一个序列S既是A的子序列又是B的子序列,则称S是A、B的公共子序列。 求A、B所有公共子序列中最长的序列的长度。输入:输入共两行,每行一个由字母和数字组成的字符串,代表序列A、B。A、B的长度不超过200个字符 阅读全文

posted @ 2012-07-11 14:32 IThinktan 阅读(431) 评论(0) 推荐(0) 编辑

二叉排序树(查找树)

摘要: 时限:1000ms 内存限制:10000K 总时限:3000ms描述:已知二叉排序树中结点数据域为整数,根据键盘输入不同个数的数据构造二叉排序树,设计递归算法输出树中所有大于或等于给定值x的结点,并以函数的参数返回输出的结点个数并打印。假设以二叉链表为存储结构,其结点结构为: lchild data rchild输入:先输入数据的个数n,然后连续的n行每行一个正整数表示结点的值,最后输入正整数x。输出:先序输出树中所有大于或等于给定值x的结点的值和这样的结点的个数,每个数据占一行。输入样例:427947输出样例:792#include<iostream>using namespac 阅读全文

posted @ 2012-07-11 10:21 IThinktan 阅读(514) 评论(0) 推荐(0) 编辑

堡垒问题(深搜、回溯_子集树)

摘要: 时限:1000ms 内存限制:10000K 总时限:3000ms描述:城堡是一个4×4的方格,为了保卫城堡,现需要在某些格子里修建一些堡垒。城堡中的某些格子是墙,其余格子都是空格,堡垒只能建在空格里,每个堡垒都可以向上下左右四个方向射击,如果两个堡垒在同一行或同一列,且中间没有墙相隔,则两个堡垒都会把对方打掉。问对于给定的一种状态,最多能够修建几个堡垒。输入:每个测例以一个整数n(1char Arr[4][4]={0};int n,max=0;void checkmax(){ int sum=0; for(int i=0;imax)//取置堡垒个数最多的 max=su... 阅读全文

posted @ 2012-07-11 10:16 IThinktan 阅读(1047) 评论(6) 推荐(1) 编辑

导航