#include "stdio.h"
void swap(char *c1, char *c2)
{
*c1 ^= *c2;
*c2 ^= *c1;
*c1 ^= *c2;
}
void fun(char array[][3], int len, char *ans)
{
char c[128]={0};
int i, j, k=1;
for (i=0; i<len; i++)
for (j=0; j<3; j++)
if (c[array[i][j]] == 0)
c[array[i][j]] = k++;
ans[k] = 0;
k = 0;
while (1)
{
for (i=k; i<len; i++)
{
if (c[array[i][0]] > c[array[i][1]])
swap(&c[array[i][0]], &c[array[i][1]]);
if (c[array[i][1]] > c[array[i][2]])
swap(&c[array[i][1]], &c[array[i][2]]);
}
for (i=0; i<len; i++)
if ((c[array[i][0]] > c[array[i][1]]) || (c[array[i][1]] > c[array[i][2]]))
{
k = i;
break;
}
if (i == len)
break;
}
for (i=97; i<123; i++) //只考虑 a -- z
if (c[i] > 0)
ans[c[i]-1] = i;
}
main()
{
char str[128]={0};
char array[][3]={{'t', 's', 'f'}, {'a', 's', 'u'}, {'m', 'a', 'f'}, {'a', 'i', 'n'}, {'s', 'u', 'n'},
{'m', 'f', 'u'}, {'a', 't', 'h'}, {'t', 'h', 'i'}, {'h', 'i', 'f'}, {'m', 'h', 'f'},
{'a', 'u', 'n'}, {'m', 'a', 't'}, {'f', 'u', 'n'}, {'h', 's', 'n'}, {'a', 'i', 's'},
{'m', 's', 'n'}, {'m', 's', 'u'}};
fun(array, sizeof(array)/sizeof(array[0]), str);
puts(str);
}
void swap(char *c1, char *c2)
{
*c1 ^= *c2;
*c2 ^= *c1;
*c1 ^= *c2;
}
void fun(char array[][3], int len, char *ans)
{
char c[128]={0};
int i, j, k=1;
for (i=0; i<len; i++)
for (j=0; j<3; j++)
if (c[array[i][j]] == 0)
c[array[i][j]] = k++;
ans[k] = 0;
k = 0;
while (1)
{
for (i=k; i<len; i++)
{
if (c[array[i][0]] > c[array[i][1]])
swap(&c[array[i][0]], &c[array[i][1]]);
if (c[array[i][1]] > c[array[i][2]])
swap(&c[array[i][1]], &c[array[i][2]]);
}
for (i=0; i<len; i++)
if ((c[array[i][0]] > c[array[i][1]]) || (c[array[i][1]] > c[array[i][2]]))
{
k = i;
break;
}
if (i == len)
break;
}
for (i=97; i<123; i++) //只考虑 a -- z
if (c[i] > 0)
ans[c[i]-1] = i;
}
main()
{
char str[128]={0};
char array[][3]={{'t', 's', 'f'}, {'a', 's', 'u'}, {'m', 'a', 'f'}, {'a', 'i', 'n'}, {'s', 'u', 'n'},
{'m', 'f', 'u'}, {'a', 't', 'h'}, {'t', 'h', 'i'}, {'h', 'i', 'f'}, {'m', 'h', 'f'},
{'a', 'u', 'n'}, {'m', 'a', 't'}, {'f', 'u', 'n'}, {'h', 's', 'n'}, {'a', 'i', 's'},
{'m', 's', 'n'}, {'m', 's', 'u'}};
fun(array, sizeof(array)/sizeof(array[0]), str);
puts(str);
}
[此贴子已经被作者于2016-12-13 21:36编辑过]