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