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