C语言实际问题
2、产生无连续重复部分的字符串。(1)描述:编写程序,产生由1,2,3这3个数字符号所构成、长度为n的字符串,并且在字符串中对于任何一个子串而言,都不会有相邻的、完全相同的子串;
(2)输入:字符串长度n;
(3)输出:无相邻重复子串的所有字符串,每个字符串换行输出。
例如:
Please input string length n: 5 (回车)
屏幕输出:
13121
13123
13212
……
程序代码:#include<stdio.h>
#include<math.h>
#define N 100
void main()
{
int t[N+1]={0};
int flag,i,s,s1=0,s2=0,n,temp;
printf("Please input string length n:");
scanf("%d",&n);
s1=(int)pow(3,n-1);
s2=(int)pow(3,n);
printf("s1=%d,s2=%d\n",s1,s2);
for(s=0;s<s2;s++)
{
i=n;
temp=s;
while(temp)
{
t[i]=temp%3;
temp/=3;
i--;
}
flag=1;
for(i=1;i<n;i++)
{
if(t[i]==t[i+1])
{
flag=0;
break;
}
}
if(flag)
{
for(i=1;i<=n;i++)
{
printf("%d",t[i]+1);
}
printf("\n");
}
}
}
n<=100