UVA644

UVA644题意:输入多个序列,判断是否存在前缀关系。思路如下:现

大家好,又见面了,我是你们的朋友全栈君。

题意:输入多个序列,判断是否存在前缀关系。思路如下:先按照长度大小排序,再用两重循环,依次判断每一个序列是否存在前缀。

#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;}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149388.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号