| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 395 人关注过本帖
标题:谁有更好的算法
只看楼主 加入收藏
flashweb
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-3-14
收藏
 问题点数:0 回复次数:2 
谁有更好的算法

abc共6种组合方式:abc/acb/bac/bca/cab/cba

#include "stdio.h"
main()
{
char a[3]={'a','b','c'};
int i,j,k,l;
l=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0;k<3;k++)
{
if(i != j && i != k && j != k)/*互不重复就输出*/
{
printf("%c%c%c\n",a[i],a[j],a[k]);
l=l+1;
}
}

printf("%d",l);
getch();
}

这个程序太大了,如果遇到了多的字符就................不知道有没有什么更好的方法

搜索更多相关主题的帖子: include 
2006-03-07 15:55
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

递归,这是书上的一个C++函数例子,楼主可以把输入输出,头文件改一下.

[CODE]

#include<stdio.h>
#include<stdlib.h>

void Perm(char*, int, int);
void Swap(char*, char*);

int main()
{
char str[3] = {'a', 'b', 'c'};
Perm(str, 0, 3);

system("pause");
return 0;
}


void Perm(char *a, int k, int n)
{
if(k==n)
{
for(int i=0; i<n; i++)
printf("%c",a[i]);
printf("\n");
}
else
{
for(int i=k; i<n; i++)
{
Swap(a+k,a+i);
Perm(a,k+1,n);
Swap(a+k,a+i);
}
}
}

void Swap(char *a, char *b)
{
char tmp=*a;
*a = *b;
*b = tmp;
}


[/CODE]

我自己改了吧还是,,,,

[此贴子已经被作者于2006-3-7 16:41:31编辑过]


2006-03-07 16:23
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

写个函数试试:函数有两参数,一个是个串,一个是个字符,每次字符从字符串的头走到尾


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-07 16:50
快速回复:谁有更好的算法
数据加载中...
 
   



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

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