博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva1588 Kickdown
阅读量:4114 次
发布时间:2019-05-25

本文共 3389 字,大约阅读时间需要 11 分钟。

题目大意: 一个容器高度为3,俩个成员都是1或2的字符串,判断容器长度最短多少可以装下俩个字符串

解题思路: 从字符串a的最后一个字符与字符串b的第一个字符开始,依次比较,找出最优解

法一:

#include 
#include
#include
using namespace std;int main() { char a[100000], b[100000]; while(scanf("%s%s", a, b) != EOF) { int l1, l2, l; l1 = strlen(a); l2 = strlen(b); if(l1 >= l2) l = l1; else l = l2; int i = l1 - 1, j = 0, max = 0; for(;j < l2 + l1;j++) { int s = 0; int m = i, n = j; for(;n >= l2 || a[m] - '0' + b[n] - '0' <= 3 || (m * n) < 0;m--, n--) { if(m < 0 || n < 0) { if(max < s) max = s; break; } if(n < l2) s++; } if(max == l) break; } l = l1 + l2- max; cout << l << endl; } return 0;}

算法解释:

法二:

#include 
#include
#include
using namespace std;{ char s1[128], s2[128]; while (scanf("%s %s", s1, s2) == 2) { int n1 = strlen(s1), n2 = strlen(s2); int ret = n1 + n2; for (int i = -n2; i <= n1; i++) { int ok = 1; { if (i + j >= 0 && i + j < n1) ok &= s1[i+j] - '0' + s2[j] - '0' <= 3; } if (ok) ret = min(ret, max(n1, i + n2) - min(i, 0)); } printf("%d\n", ret); } return 0;}

法三:

#include
#include
#include
using namespace std;char a[105];char b[105];int main() { int i, j, count; while (scanf( "%s%s", a, b) != EOF) { int s = 0, t = 0; for (i = 0; i < strlen(a); i++) { count = 1; for (j = 0; j < strlen(b) && (i + j) < strlen(a) ; j++) if (a[j+i] == '2' && b[j] == '2') { count = 0; break; } if(count) break; } s = max(strlen(a), strlen(b) + i); for (i = 0; i < strlen(b); i++) { count = 1; for (j = 0; j < strlen(a) && (j + i) < strlen(b); j++) if (b[j+i] == '2' && a[j] == '2') { count = 0; break; } if (count) break; } t= max(strlen(b), strlen(a) + i); int l = min(t, s); printf("%d\n",l); memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); } return 0;}

错误思想:

#include 
#include
#include
int main(){ char str1[105],str2[105]; int i,length1,length2,length,flag1=1,flag=0,x,y; while(scanf("%s%s",str1,str2)!=EOF) { int k=0; int t=0; flag1=1; flag=0; length1=strlen(str1); length2=strlen(str2); length=length1; if(length2>length1) { length=length2; flag1=2; } for(i=0;i
=length2) { flag=1; break; } } else if(flag1==2&&flag==0) { for(x=i,y=0;x
=length1) { flag=1; break; } } if(flag==1) break; } if(flag==0) printf("%d\n",length1+length2); else if(flag==1) printf("%d\n",length); memset(str1,0,sizeof(str1)); memset(str2,0,sizeof(str2)); } return 0;}

转载地址:http://uugsi.baihongyu.com/

你可能感兴趣的文章
Golang学习日志 ━━ 单向链表
查看>>
Golang面试考题记录 ━━ 删除链表中的节点,首先明白什么是链表,其次语文要好能看懂题
查看>>
Golang面试考题记录 ━━ 删除链表的倒数第N个节点, 学习闭包递归、双指针、哨兵节点
查看>>
服务器配置篇 ━━ iis7配置php出现fastcgi的500错误,LocalSystem/LocalService/NetworkService/ApplicationPoolIdentity
查看>>
Golang学习日志 ━━ VSCode安装Go插件(代理的使用)及初用mod
查看>>
windows使用小技巧 ━━ Windows 10 HEVC扩展要收费怎么办?教你怎么免费下载HEVC扩展
查看>>
Golang学习日志 ━━ 使用bufio方法拷贝文件将导致mov视频文件出错
查看>>
Golang学习日志 ━━ Mysql相关
查看>>
Golang学习日志 ━━ goQuery 的使用
查看>>
Golang学习日志 ━━ Go 常用包整理及介绍
查看>>
Golang学习日志 ━━ 借百度AI实现语音合成实例
查看>>
安全篇 ━━ 整改mysql数据库及windows服务器(根据安全等级保护评估、渗透测试报告)
查看>>
PHP开发日志 ━━ PHP验证码程序:session生成图片
查看>>
安全篇 ━━ ITlearner ASP探针 V1.2
查看>>
uni-app开发日志[2020122501]:uni-app 和 Vue 的区别
查看>>
uni-app开发日志[2020122502]:uniapp将图片绝对路径转化为BASE64格式
查看>>
PHP开发日志 ━━ MYSQL数据库使用UTF-8中文编码乱码的解决办法
查看>>
PHP开发日志 ━━ IIS7安装PHP8.0及多个版本如何同时存在一台服务器
查看>>
安全篇 ━━ windows2008自建证书、IIS配置https服务器及浏览器报错处理
查看>>
PHP开发日志 ━━ jsrsasign、jsencrypt、php实现前后端数据的RSA加密和解密
查看>>