| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2818 人关注过本帖, 1 人收藏
标题:输入一字母系列如:A B C D E,从中任意选两个字母用括号将它们括起来。
只看楼主 加入收藏
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>

#define N 1000
int d[N] = {}, n;

void printans()
{
    int i, j;

    for (i = 0; i < n; ++i)
    {
        if (d[i] > 0)
        {
            for (j = 0; j < d[i]; ++j) printf("(");
            printf("%c", 'A' + i);
        }
        else if (d[i] < 0)
        {
            printf("%c", 'A' + i);
            for (j = d[i]; j < 0; ++j) printf(")");
        }
    }
    printf("\n");
}

void solve(int start, int end)
{
    if (start == 0 && end == n - 1)
    {
        printans();
        return;
    }

    if (start > 0)
    {
        start -= 1; d[start] += 1; d[end] -= 1;
        solve(start, end);
        d[end] += 1; d[start] -= 1; start += 1;
    }

    if (end < n - 1)
    {
        end += 1; d[start] += 1; d[end] -= 1;
        solve(start, end);
        d[end] += 1; d[start] -= 1; end -= 1;
    }
}

int main(void)
{
    while (scanf("%d", &n) != EOF)
    {
        int i;

        for (i = 0; i < n; ++i)
            d[i] = 0;

        for (i = 1; i < n; ++i)
        {
            d[i - 1] += 1; d[i] -= 1;
            solve(i - 1, i);
            d[i - 1] -= 1; d[i] += 1;
        }
    }

    return 0;
}


我也凑个热闹好了…………

专心编程………
飞燕算法初级群:3996098
我的Blog
2010-08-26 23:31
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
~ ~
2010-08-27 00:28
快速回复:输入一字母系列如:A B C D E,从中任意选两个字母用括号将它们括起来 ...
数据加载中...
 
   



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

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