大家好,又见面了,我是你们的朋友全栈君。
题意:输入多个序列,判断是否存在前缀关系。思路如下:先按照长度大小排序,再用两重循环,依次判断每一个序列是否存在前缀。
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
#define N 101
#define M 50
struct T{
char str[M];
};
int cmp(const T &a, const T &b)
{
return strlen(a.str) < strlen(b.str);
}
int main()
{
T tem[N];
int cnt = 0;
int t = 1;
int bo = 0;
while(cin >> tem[cnt].str)
{
if (strcmp(tem[cnt++].str, "9"))
continue;
sort(tem, tem + cnt, cmp);
for (int i = 0; i < cnt; i++)
{
int k = strlen(tem[i].str);
for (int j = i + 1; j < cnt; j++)
{
if (strncmp(tem[i].str, tem[j].str, k) == 0)
{
bo = 1;
break;
}
}
if (bo)
break;
}
if (bo)
cout << "Set " << t++ << " is not immediately decodable" << endl;
else
cout << "Set " << t++ << " is immediately decodable" << endl;
// Init.
memset(tem, 0, sizeof(tem));
bo = 0;
cnt = 0;
}
return 0;}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149388.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...