2012年7月16日

跳马(广搜_队列)

摘要: 时限:1000ms 内存限制:10000K 总时限:3000ms描述:在国际象棋中,马的走法与中车象棋类似,即俗话说的“马走日”,下图所示即国际象棋中马(K)在一步能到达的格子(其中黑色的格子是能到达的位置)。现有一200*200大小的国际象棋棋盘,棋盘中仅有一个马,给定马的当前位置(S)和目标位置(T),求出马最少需要多少跳才能从当前位置到达目标位置。输入:本题包含多个测例。输入数据的第一行有一个整数N(1<=N<=1000),表示测例的个数,接下来的每一行有四个以空格分隔的整数,分别表示马当前位置及目标位置的横、纵坐标C(x,y)和G(x,y)。坐标由1开始。输出:对于每个测例 阅读全文

posted @ 2012-07-16 12:37 IThinktan 阅读(820) 评论(0) 推荐(0) 编辑

独轮车(广搜_队列)

摘要: 时限:1000ms 内存限制:10000K 总时限:3000ms描述:独轮车的轮子上有红、黄、蓝、白、绿(依顺时针序)5种颜色,在一个如下图所示的20*20的迷宫内每走一个格子,轮子上的颜色变化一次。独轮车只能向前推或在原地转向。每走一格或原地转向90度均消耗一个单位时间。现给定一个起点(S)和一个终点(T),求独轮车以轮子上的指定颜色到达终点所需的最短时间。输入:本题包含一个测例。测例中分别用一个大写字母表示方向和轮子的颜色,其对应关系为:E-东、S-南、W-西、N-北;R-红、Y-黄、B-蓝、W-白、G-绿。在测试数据的第一行有以空格分隔的两个整数和两个大写字母,分别表示起点的坐标S(x, 阅读全文

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

2012年7月12日

石子合并(动态规划DP)

摘要: 时限:1000ms 内存限制:10000K 总时限:3000ms描述:在一个圆形操场的四周摆放着n堆石子(n<= 100),现要将石子有次序地合并成一堆。规定每次只能选取相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。编一程序,读入石子堆数n及每堆的石子数(<=20)。选择一种合并石子的方案,使得做n-1次合并,得分的总和最小;比如有4堆石子:4 4 5 9 则最佳合并方案如下:4 4 5 9 score: 08 5 9 score: 813 9 score: 8 + 13 = 2122 score: 8 + 13 + 22 = 43输入: 可能有多组测试数据。 阅读全文

posted @ 2012-07-12 20:03 IThinktan 阅读(12436) 评论(0) 推荐(1) 编辑

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 阅读(2962) 评论(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 阅读(5017) 评论(0) 推荐(0) 编辑

防卫导弹(动态规划)

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

posted @ 2012-07-11 16:48 IThinktan 阅读(1358) 评论(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 阅读(428) 评论(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 阅读(513) 评论(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) 编辑

2012年7月10日

装载问题(回溯_子集树)

摘要: 时限:1000ms 内存限制:10000K 总时限:3000ms描述:有两艘船,载重量分别是c1、 c2,n个集装箱,重量是wi (i=1…n),且所有集装箱的总重量不超过c1+c2。确定是否有可能将所有集装箱全部装入两艘船。输入:多个测例,每个测例的输入占两行。第一行一次是c1、c2和n(n<=10);第二行n个整数表示wi (i=1…n)。n等于0标志输入结束。输出:对于每个测例在单独的一行内输出Yes或No。输入样例: 7 8 28 77 9 28 80 0 0输出样例: Yes No#include<stdio.h>int c1,c2,n,w[10];//待输入数据i 阅读全文

posted @ 2012-07-10 22:41 IThinktan 阅读(695) 评论(0) 推荐(0) 编辑

导航