首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问达人思路,字符组合可有何种算法

2013-03-27 
请教达人思路,字符组合可有何种算法?char str[]{a,b,c,d}此数组,3个一组组合,不重复,如组合为:a

请教达人思路,字符组合可有何种算法?
char str[]={'a','b','c','d'};
此数组,3个一组组合,不重复,如组合为:abc,abd,bcd。那种思路比较可行呢?分不多,将就着给点。
[解决办法]
'a','b','c','d' 四个字符,定义一个二进制数,4位。显示与不显示,就是0,1,所以有
0001
0001
0010
。。。。。
1111

string str;
void main()
{
string str;
for(int i = 1; i <= 16; ++i)
{
int m = i;
str += (m & 0x1) ? "a" : "";
str += (m>>1 & 0x1) ? "b" : "";
str += (m>>2 & 0x1) ? "c" : "";
str += (m>>3 & 0x1) ? "d" : "";

cout<< i << " " << str <<endl;
str.clear();   
}
getchar();
}
[解决办法]


void main()
{
string str;
for(int i = 1; i <= 16; ++i)
{
int m = i;
str += (m & 0x1) ? "a" : "";
str += (m>>1 & 0x1) ? "b" : "";
str += (m>>2 & 0x1) ? "c" : "";
str += (m>>3 & 0x1) ? "d" : "";

cout<< i << " " << str <<endl;
str.clear();   
}
getchar();
}

[解决办法]

#include <string>
#include <iostream>
#include "iomanip"

using namespace std;

void main()
{
string str;

for(int i = 1; i < 16; ++i)
{
int m = i;
str += (m & 0x1) ? "a" : "";


str += (m>>1 & 0x1) ? "b" : "";
str += (m>>2 & 0x1) ? "c" : "";
str += (m>>3 & 0x1) ? "d" : "";

cout<< setiosflags(ios::left) << setw(5) << i << " : " << setw(5) << str <<endl;
str.clear();   
}
getchar();
}

热点排行