UVa-644-Immediate Decodability

AOAPC I: Beginning Algorithm Contests (Rujia Liu) :: Volume 1. Elementary Problem Solving :: String


// 644 - Immediate Decodability
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;

int cmp_len(const void* _a, const void* _b)
{
	char* a = (char*)_a;
	char* b = (char*)_b;
	return strlen(a) - strlen(b);
}

int main(void)
{
	char s[8][10];
	int i, j, n, ok, flag, count=1;
	while(1)
	{
		n = 0;
		while(ok=scanf("%s", s[n]))	// 检测文件结尾
		{
			if(s[n][0] == '9')
				break;
			else
				n++;
		}
		if(ok == -1) break;
		qsort(s, n, sizeof(s[0]), cmp_len);

		flag = 1;
		for(i=0; i<n && flag; i++)
			for(j=i+1; j<n && flag; j++)
				if(strncmp(s[i], s[j], strlen(s[i])) == 0)
					flag = 0;

		if(i == n)
			cout << "Set " << count << " is immediately decodable" << endl;
		else
			cout << "Set " << count << " is not immediately decodable" << endl;
		count++;
	}
	return 0;
}



 

posted @ 2014-08-11 16:36  颜威  阅读(99)  评论(0编辑  收藏  举报