UVA1588-换低档装置
题目:https://vjudge.net/problem/UVA-1588
分析:固定s1不动,s2从s1左边一直模拟到右边,过程中更新最小值。
#include <stdio.h> #include <string.h> char s1[110],s2[110]; int s[330]; int main(void){ while(scanf("%s %s",s1,s2)==2){ int l1=strlen(s1); int l2=strlen(s2); int min=l1+l2; for(int i=0;i<=l2+l1;i++){ memset(s,0,sizeof(s)); for(int j=l2;j<l2+l1;j++){ s[j]=s1[j-l2]-'0'; } for(int j=0;j<l2;j++){ s[i+j]+=s2[j]-'0'; } int r=i>l1?i+l2:l2+l1;//末尾 int b=0; for(int k=i;k<r;k++){ if(s[k]>3)b=1; } if(b==0){ int h=i>l2?l2:i;//始端 if(r-h<min){min=r-h; } } } printf("%d\n",min); memset(s1,'\0',sizeof(s1)); memset(s2,'\0',sizeof(s2)); memset(s,0,sizeof(s)); } return 0; }
终究独木难支。