NYOJ915——+-字符串
+-字符串
时间限制:1000 ms | 内存限制:65535 KB
难度:1
- 描述
- Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。
- 输入
- 多组测试数据
每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。 - 输出
- 仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
- 样例输入
-
++-+--+ -++--++
- 样例输出
-
4
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 char a[5000],b[5000]; 6 int i,j,n,c=0,d=0,e=0,f=0; 7 char t; 8 while(scanf("%s %s",a,b)!=EOF) 9 { 10 n=0; 11 getchar(); 12 c=strlen(a); 13 d=strlen(b); 14 if(c!=d)//判断两个字符串长度是不是相等 15 { 16 printf("-1\n"); 17 continue; 18 } 19 for(i=0;i<c;i++) 20 { 21 if(a[i]=='+')//得到a数组中+号个数 22 { 23 e++; 24 } 25 if(b[i]=='+')//得到b数组中+号个数 26 { 27 f++; 28 } 29 } 30 if(e!=f)//判断两个数组中+号个数是不是相等 31 { 32 printf("-1\n"); 33 continue; 34 } 35 for(i=0;i<c-1;i++) 36 { 37 if(a[i]==b[i])//看对应位置上字符是否相等 38 { 39 continue; 40 } 41 for(j=i;j<c-1;j++)//当对应位置上字符不等时,需要进行交换操作 42 { 43 n++; 44 if(b[i]==b[j+1])//b相邻位置上字符相等 45 { 46 continue; 47 } 48 else//b数组字符交换 49 { 50 t=b[i]; 51 b[i]=b[j+1]; 52 b[j+1]=t; 53 break; 54 } 55 } 56 } 57 printf("%d\n",n); 58 } 59 return 0; 60 }
心之所向,素履以往
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南