输出如下序列,数字从0,1,2中取,相邻的任何数量的序列都不能相同。
0
0 1
0 1 0
0 1 0 2
0 1 0 2 0
0 1 0 2 0 1
0 1 0 2 0 1 2
0 1 0 2 0 1 2 0
0 1 0 2 0 1 2 0 2
0 1 0 2 0 1 2 0 2 1
0 1 0 2 0 1 2 0 2 1 0
0 1 0 2 0 1 2 0 2 1 0 1
0 1 0 2 0 1 2 0 2 1 0 1 2
0 1 0 2 0 1 2 0 2 1 0 1 2 0
0 1 0 2 0 1 2 0 2 1 0 1 2 0 1
源代码如下,输出有些BUG,有一些无效的不符合要求的中间结果没有去掉。
#include <iostream>
#include <fstream>
using namespace std;
const int N = 16;
int main()
{
fstream fp;
fp.open("012.txt",ios::out);
int arr[N] = {-1};
arr[0] = 0;
for (int i = 1; i < N; i++)
{
for (int n = 0; n < i; n++)
fp << arr[n] << " ";
fp << endl;
int j = 0;
for (; j < 3; j++)
{
int flag = 1;
arr[i] = j;
for (int k = i-1; k >= i/2; k--)
{
if (arr[k] == arr[i])
{
int count = 0;
for (int m = i-k; m > 0; m--)
if (arr[i-m+1] == arr[k-m+1])
count++;
if (count == i-k)
{
flag = 0;
break;
}
flag = 1;//attention!!!
}
else {flag = 1;}
}
if (flag)
break;
if (j == 2)
{arr[i] = -1;
i--;
j = arr[i];}
}
}
fp.close();
system("pause");
return 0;
}