注册 登录
编程论坛 C++教室

C语言实际问题

心灵百合 发布于 2011-09-07 18:07, 502 次点击
2、产生无连续重复部分的字符串。
(1)描述:编写程序,产生由1,2,3这3个数字符号所构成、长度为n的字符串,并且在字符串中对于任何一个子串而言,都不会有相邻的、完全相同的子串;
(2)输入:字符串长度n;
(3)输出:无相邻重复子串的所有字符串,每个字符串换行输出。
例如:
Please input string length n: 5 (回车)
屏幕输出:
13121
13123
13212
……
5 回复
#2
laznrbfe2011-09-09 17:39
程序代码:
#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
不好意思,以上代码和题目要求不一致。

[ 本帖最后由 laznrbfe 于 2011-9-10 11:19 编辑 ]
#3
编程的乐趣2011-09-09 18:23
呵呵恩
#4
hoho5682011-09-09 22:19
以下是引用laznrbfe在2011-9-9 17:39:09的发言:

#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=temp%3;
            temp/=3;
            i--;
        }

        flag=1;
        for(i=1;i<n;i++)
        {
            if(t==t1])
            {
                flag=0;
                break;
            }
        }
        if(flag)
        {
            for(i=1;i<=n;i++)
            {
                printf("%d",t+1);
            }
            printf("\n");
        }
    }
}
n<=100

明显不对啊。。。我运行了一下,都是相邻的子串啊。。
只有本站会员才能查看附件,请 登录
#5
laznrbfe2011-09-10 11:17
回复 4楼 hoho568
我理解错了。悲剧了~
#6
心灵百合2011-09-11 11:30
谢谢咯!大侠们
1