uva 1587 Kickdown
来源:互联网 发布:反补世界树 知乎 编辑:程序博客网 时间:2024/05/16 11:31
描述:有两个长度为n1和n2的长条,每点的高度可能为2或者1,求一个最小的高度为3的容器的长度去能装下这两个长条。
分析:我分三种情况,让短的动,长的不动,1.。长的完全包含了短的。2.短的在长的左边部分重合。3.短的在长的右边部分重合。
应该先从尽可能重叠部分多的情况找起,找到就return。没优化。
#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>using namespace std;char a[105],b[105];int ans;int f(char* a,char* b,int la,int lb){ int len=la+lb; for(int i=0;i<=la-lb;i++){ int ok=1; for(int j=0;j<lb;j++)if(a[i+j]+b[j]>'1'+'2')ok=0; if(ok)return la; } for(int i=1;i<lb;i++){ int ok=1; for(int j=0;j<i;j++)if(a[j]+b[lb-i+j]>'1'+'2')ok=0; if(ok)len=min(len,la+lb-i); } for(int i=1;i<lb;i++){ int ok=1; for(int j=0;j<i;j++)if(b[j]+a[la-i+j]>'1'+'2')ok=0; if(ok)len=min(len,la+lb-i); } return len;}int main(){ while(cin>>a>>b){ int lena=strlen(a),lenb=strlen(b); if(lena>=lenb)ans=f(a,b,lena,lenb); else ans=f(b,a,lenb,lena); cout<<ans<<endl; } return 0;}
1 0
- uva 1587 Kickdown
- Kickdown UVA
- uva 1588Kickdown
- Kickdown UVa 1588
- UVa 1588 - Kickdown
- UVa 1588 - Kickdown
- Uva - 3712 - Kickdown
- UVa 1588 Kickdown
- UVA - 1588 Kickdown
- UVA - 1588 Kickdown
- UVa 1588 - Kickdown
- UVa-1588Kickdown
- UVA - 1588 Kickdown
- Uva - 1588 - Kickdown
- UVA-1588 Kickdown
- UVA 1588 Kickdown
- UVa 1588 kickdown
- uva 1588 - Kickdown
- 1-1环境搭建
- snprintf和sprintf区别分析
- 数据库设计指南
- Java中的内部类
- Day4 旋转屏幕——现场保护与现场恢复
- uva 1587 Kickdown
- 周总结
- 连接池配置 - tomcat7
- poj2299 Ultra-QuickSort
- NXP TWR-KV11Z75M 塔式系统模块简介
- 1-2jQuery初体验
- win7 64位系统如何设置关闭系统自动更新
- php安装
- 206. Reverse Linked List