UVA1588-Kickdown

2018-10-30-18:27:03

原题链接

题目描述:

  给出两个长度分别为n1,n2且每列高度只为1或2的长条,需要将它们放入一个高度为3的容器,求出能够容纳他们的最短容器长度。

本题思路:

  模拟插入,从第一个接口开始插,如果不满足条件就跳到下一个接口,满足条件时跳出函数输出答案即可。

本题注意点:

  第一次提交时没有考虑到插和被插顺序不一样导致结果不一。特殊数据2222 211112。

本题感悟:

  遇到题目一定要多方位考虑,考虑到就去实现,不要根据经验主观臆断。

AC代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 using namespace std;
 5 #define max 3
 6 
 7 int link(string s1,string s2){
 8     bool flag=false;
 9     int len1=s1.size(),len2=s2.size();
10     int i,j;
11     for(i=0;i<=len2;i++){
12         int index=i;
13         if(!flag)
14         for(j=0;j<len1;j++){
15             if(s1[j]+s2[index]-2*'0'>max)
16                 break;
17             if(index==len2-1||j==len1-1){
18                 flag=true;
19                 break;
20             }
21             index++;
22         }
23         else
24             break;
25     }
26      return i+len1-1>len2?i+len1-1:len2;
27 }//s1插s2
28 
29 int main()
30 {
31     string s1,s2;
32     while(cin>>s1>>s2){
33         cout<<min(link(s1,s2),link(s2,s1))<<endl;
34     }
35     return 0;
36 }

 

  

posted @ 2018-10-30 18:28  Cruel_King  阅读(681)  评论(0编辑  收藏  举报