交替字符串 该题是oj形式的,所以你的s1,s2,s3不应该直接赋值,而应该改为输入形式 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当使用str1 = Console.ReadLine();的形式进行输入时,会超时;请问如何改为输入形式??语言不限,能实现输入即可。Console.WriteLine(check(Console.ReadLine(), Console.ReadLine(), Console.ReadLine())); 看了你的代码,发现有个有个明显的错误,就是当 str1[i] == str3[k] && str2[j] == str3[k]是,你是一定会选i++的,但也可能是j++。所以这里应该用递归实现,这样可以回溯。你的输入应该没问题,可能是while死循环了。用c++输入是这样的:while(cin>>s1>>s2>>s3){ if(!cin) break;}用c输入是这样的:char s1[105],s2[105],s3[205];while(~scanf("%s%s%s",s1,s2,s3)){} 谢谢您的解答,虽然C#那个还是不行,不过好在我改成了C++版的可以,已经调试成功static bool check(string str1, string str2, string str3, int i, int j, int k, int len1, int len2, int len3) { if (len1 + len2 != len3) return false; //字符串长度不同则肯定不是交替字符串 if (i == len1 && j == len2 && k == len3) return true; //三个串均到达结尾处 if (i < len1 && str1[i] == str3[k]) //字符串1未到结尾且当前字符与3相同 if (check(str1, str2, str3, i + 1, j, k + 1, len1, len2, len3)) return true;//str1先与str3比较 if (j < len2 && str2[j] == str3[k]) //字符串2未到结尾且当前字符与3相同 if (check(str1, str2, str3, i, j + 1, k + 1, len1, len2, len3)) return true;//str2先与str3比较 return false; //都不相同则不是交替字符串 } //求字符串长度 static int len(string str) { int i = 0; while (str[i] != 0) //求长原理字符串最后以0 结尾,统计不为0,直到为0 时即可 i++; return i; } //封装,转化 static string check(string str1, string str2, string str3) { if (check(str1, str2, str3, 0, 0, 0, len(str1), len(str2), len(str3))) return "YES"; else return "NO"; } 求高手cad文件转arcgis shape文件 怎样简明的显示数据库?求解答 DataTable clear后再Fill很慢 求网站流量统计代码 如何获取SqlDataAdapter.Update()方法执行后影响的数据行数 C#中,如何通过两个特定的字符将一个字符串转化为一个DataSet 用C#做企业网站 treeview问题!怎样通过节点ID找到当前节点,在线等~~~ 哪里可以上载c#教程, 怎么没人回答我啊? 请问这里如何写统计数据的语句 c# 的COM 调试时不能断点调试,怎么办?
请问如何改为输入形式??语言不限,能实现输入即可。Console.WriteLine(check(Console.ReadLine(), Console.ReadLine(), Console.ReadLine()));
你的输入应该没问题,可能是while死循环了。用c++输入是这样的:
while(cin>>s1>>s2>>s3)
{
if(!cin) break;
}
用c输入是这样的:
char s1[105],s2[105],s3[205];
while(~scanf("%s%s%s",s1,s2,s3))
{
}
static bool check(string str1, string str2, string str3, int i, int j, int k, int len1, int len2, int len3)
{
if (len1 + len2 != len3) return false; //字符串长度不同则肯定不是交替字符串
if (i == len1 && j == len2 && k == len3) return true; //三个串均到达结尾处 if (i < len1 && str1[i] == str3[k]) //字符串1未到结尾且当前字符与3相同
if (check(str1, str2, str3, i + 1, j, k + 1, len1, len2, len3)) return true;//str1先与str3比较
if (j < len2 && str2[j] == str3[k]) //字符串2未到结尾且当前字符与3相同
if (check(str1, str2, str3, i, j + 1, k + 1, len1, len2, len3)) return true;//str2先与str3比较 return false; //都不相同则不是交替字符串
} //求字符串长度
static int len(string str)
{
int i = 0;
while (str[i] != 0) //求长原理字符串最后以0 结尾,统计不为0,直到为0 时即可
i++;
return i;
} //封装,转化
static string check(string str1, string str2, string str3)
{
if (check(str1, str2, str3, 0, 0, 0, len(str1), len(str2), len(str3))) return "YES";
else return "NO";
}