UVA-1588

房东的猫 提交于 2020-02-08 19:12:57

只用C来写

题目:https://vjudge.net/problem/UVA-1588

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define LEN 1000
 4 
 5 int l(int lenth1,int lenth2,int keep)
 6 {
 7     int lenth;
 8     int m=lenth1-lenth2;
 9     if(keep<=m)lenth=lenth1;
10     else lenth=keep+lenth2;
11     return lenth;
12 }
13 
14 int lp(int lenth1,int lenth2,int keep)
15 {
16     return (lenth2-keep-1+lenth1);
17 }
18 int main()
19 {
20     char down[LEN]={'0'};
21     char up[LEN]={'0'};
22     while(scanf("%s",down)!=EOF)
23     {
24 
25         int lenth1,lenth2,i;
26         int check=0,keep,LONG1,LONG2;
27         int LONG;
28         char* temp;
29         scanf("%s",up);
30         lenth1=strlen(down);
31         lenth2=strlen(up);
32         if(lenth1<lenth2)
33         {
34             char u[LEN];
35             int mid;
36             strcpy(u,down);
37             for(i=0;i<LEN;i++)down[i]='\0';
38             strcpy(down,up);
39             for(i=0;i<LEN;i++)up[i]='\0';
40             strcpy(up,u);
41             mid=lenth1;
42             lenth1=lenth2;
43             lenth2=mid;
44         }
45         temp=&up[0];
46         for(i=0;;i++)
47         {
48             if(i==lenth1){LONG1=lenth1+lenth2;break;}
49             keep=i;
50             for(;temp<=&up[lenth2-1];temp++,i++)
51             {
52                 int sum;
53                 if(down[i]!='\0')sum=(*temp-'0')+(down[i]-'0');
54                 if(down[i]=='\0')sum=0;
55                 if(sum==4){check=0;break;}
56                 if(sum!=4)check=1;
57             }
58             if(check==1){LONG1=l(lenth1,lenth2,keep);break;}
59             i=keep;
60             temp=&up[0];
61         }
62         temp=&up[lenth2-1];
63         check=0;
64         for(i=lenth2-2;;i--)
65         {
66             if(i==-1){LONG2=lenth1+lenth2;break;}
67             keep=i;
68             for(;temp>=&up[0];temp--,i--)
69             {
70                 int sum;
71                 if(down[i]!='\0')sum=(*temp-'0')+(down[i]-'0');
72                 if(down[i]=='\0')sum=0;
73                 if(sum==4){check=0;break;}
74                 if(sum!=4)check=1;
75             }
76             if(check==1){LONG2=lp(lenth1,lenth2,keep);break;}
77             i=keep;
78             check=0;
79             temp=&up[lenth2-1];
80         }
81         LONG=(LONG1>LONG2)?LONG2:LONG1;
82         printf("%d\n",LONG);
83         for(i=0;i<LEN;i++)up[i]='\0';
84         for(i=0;i<LEN;i++)down[i]='\0';
85     }
86     return 0;
87 }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!