读书人

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

发布时间: 2013-03-27 11:22:42 作者: rapoo

请教达人思路,字符组合可有何种算法?
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();
}

读书人网 >C++

热点推荐