ストリングコンビネーション解法

523 ワード

タイトル:文字列を入力し、その文字列のすべての組合せを出力します.
例えば、abcが入力されると、その組み合わせはa、b、c、ab、ac、bc、abcである.
ここでは新しい考え方を提供します.アルゴリズムの考え方は,文字列配列に文字があるか否かを整数のバイナリで表し,1はその文字があるか,0はないかを表す.
コードは次のとおりです.
	char str[] = "abcd";
	int length = strlen(str);
	int k = (1<<length) - 1 ;
	while (k)
	{
		int j = k;
		int count = 0;
		while(j>0)
		{
			int temp = j&1;
			count++;
			if (temp>0)
			{		
				cout<<str[length-count];	
			}
			j = j>>1;
		}
		cout<<endl;
		k--;
	}