| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 502 人关注过本帖, 1 人收藏
标题:C语言实际问题
只看楼主 加入收藏
心灵百合
Rank: 5Rank: 5
等 级:职业侠客
帖 子:215
专家分:367
注 册:2011-3-30
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:5 
C语言实际问题
2、产生无连续重复部分的字符串。
(1)描述:编写程序,产生由1,2,3这3个数字符号所构成、长度为n的字符串,并且在字符串中对于任何一个子串而言,都不会有相邻的、完全相同的子串;
(2)输入:字符串长度n;
(3)输出:无相邻重复子串的所有字符串,每个字符串换行输出。
例如:
Please input string length n: 5 (回车)
屏幕输出:
13121
13123
13212
……
搜索更多相关主题的帖子: 编写程序 C语言 字符串 input 
2011-09-07 18:07
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:7 
程序代码:
#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 编辑 ]
2011-09-09 17:39
编程的乐趣
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:229
专家分:1027
注 册:2011-4-4
收藏
得分:7 
呵呵恩
2011-09-09 18:23
hoho568
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:378
注 册:2009-7-14
收藏
得分:7 
以下是引用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

明显不对啊。。。我运行了一下,都是相邻的子串啊。。
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-09-09 22:19
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:0 
回复 4楼 hoho568
我理解错了。悲剧了~
2011-09-10 11:17
心灵百合
Rank: 5Rank: 5
等 级:职业侠客
帖 子:215
专家分:367
注 册:2011-3-30
收藏
得分:0 
谢谢咯!大侠们
2011-09-11 11:30
快速回复:C语言实际问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018679 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved