UVA1588-Kickdown】的更多相关文章

题目要求简述:给定长度分别为n1,n2(n1,n2<=100)且每列的高度只为1或者2的长条.需要将他们放入一个高度为3的容器,问能够容纳它们的最短容器长度. 分析: 对于这样的题目显而易见有两种思路,第一,固定一个字符串,另一个从左到右进行移动.第二,固定一个字符串a,字符串b移动,再固定b,让a移动,取二者长度最小值. 两种方法我都经过自己的实现,觉得还是第二种代码更简洁优雅,同时还具有一定的可扩展性. 用例子说明一下吧~ 数组1和数组2是我们待比较的两个数组,(当然,都是字符串数组),我们…
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-10/UVa1587:Box 代码: //UVa1587 - Box #include<iostream> unsigned rect[6];//每个面各有一个一样的对应面,故12个边只要定义6个,其中每偶奇两个代表一个长方形的两个边长 bool flag, times[3];//每个面出现的次数(出现第二次时为true) unsigned tmpx, tmpy, now; int m…
只需要固定长串,拿着短串移动就好了. 我是从右往左移动,需要注意的是要判断两头重叠部分(左端重叠和右端重叠)的大小关系. #include <iostream> #include <cstdio> #include <algorithm> #include <cstdlib> #include <cstring> using namespace std; int main() { ]; ]; ]; int i,j; while(scanf(&qu…
题目描述:算法竞赛入门经典习题3-11 题目思路:1.两长条移动匹配 2.上下调换,取小者 #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { ],s2[] ; while(gets(s1)){ gets(s2) ; int len1 = strlen(s1); int len2 = strlen(s2); int i,j ; ;i<len1;i++){ ; ;j<len2…
只用C来写 题目:https://vjudge.net/problem/UVA-1588 #include<stdio.h> #include<string.h> #define LEN 1000 int l(int lenth1,int lenth2,int keep) { int lenth; int m=lenth1-lenth2; if(keep<=m)lenth=lenth1; else lenth=keep+lenth2; return lenth; } int…
A research laboratory of a world-leading automobile company has received an order to create a special transmission mechanism, which allows for incredibly efficient kickdown - an operation of switching to lower gear. After several months of research e…
这道题思路并不难想,在做题过程中主要遇到的困难有: 因为没有仔细的考虑边界情况,没有分析全面,导致因=没有取到而得不出正确结果,浪费的大量时间. 今后在做这类题目时,一定要先进行一个比较全面的分析+模拟,再动手写代码,避免浪费时间. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define maxn 1000 int main(){ int len1,le…
题意:uva的题,每道都是有背景的orz,都是阅读理解 题解:暴力模拟,拿着短的那个串,对着长的一格一格往左滑,每滑一格暴力扫一遍.然后再从头往右滑,我这里wa了三发,wa了后习惯性瞎改,改到后来循环都改错了. shortest solution 用while循环ij当指针,还写了个函数处理左右滑. #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #inclu…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟一下就好 一位一位地往右移动. [代码] #include <bits/stdc++.h> using namespace std; const int N = 300; int a[N+10]; int b[N+10]; string s1,s2; int ans; void can(int l,int r){ for (int i = l,j = 1;i <= r && j <= (int)…
一:题目 给你连个长度分别为n1,n2且每列高度只为1或2的长条,然后将他们拼在一起,高度不能超过3,问他们拼在一起的最短长度 二:实现思路 1.获取主动轮和从动轮的数据. 2.主动轮不动,从动轮从左向右开始进行卡位,不断更新卡位成功(最大高度不超过3)时的最小长度 3.注意:当我们在某一时刻的长度若是小于等于主/从动轮的长度时,不向下判断 三:测试数据 输入数据 输出数据 四:模拟卡位 (一)主动轮+从动轮:最小长度两者之和17 (二)开始第一步:高度超过3,失败 (三)第二步:卡位成功,最小…