-1
最初,代碼輸出的組合無需替換。它可以在Combination without replacement C++找到當我設置完成時,我添加了從集合中減去一個的部分。例如,如果從該組的4種組合爲{0,1,2,3,4}被輸入的輸出將是如下:如何在此程序中使用模數將數字更改爲字母?
梳(來自,K =設置量選擇N =項)
梳(N = 5,K = 4) 〜輸出〜
0,1,2,3
0,1,2,4
0,1,3,4
0,2,3,4
1,2,3,4
⇓ 梳(N = 5,K = 4-1) 〜輸出〜
0,1,2
0,1,3
0,1,4
0,2,3
0,2,4
0,3,4
1,2,3
1,2,4
1,3,4
2,3,4
⇓ 梳(N = 5,K =(4-2)或(3-1)) 〜輸出〜
0,1
0,2
0,3
0,4
1,2
1,3
1,4
2,3
2,4
3,4
⇓ 梳(5,K =(4-3)或(2-1 )) 〜輸出〜 END
如果想要將數字更改爲具有相同順序的數字的字母,將如何使用模數進行此操作?任何其他想法如何做到這一點?
我的嘗試如下。
#include <iostream>
#include <string>
using namespace std;
void comb(int N, int K)
{
std::string bitmask(K, 1);
bitmask.resize(N, 0);
do {
for (int i = 0; i < N; ++i)
{
if (bitmask[i])
std::cout << " " << i;
if (i == 0 || i%10 == 0)
std::cout << " " << "C" << endl;
else if (i == 1 || i%10 == 1)
std::cout << " " << "C#" << endl;
else if (i == 2 || i%10 ==1)
std::cout << " " << "D" << endl;
//the "else if" statements go up to i == 11 which is B//
}
} while (std::prev_permutation(bitmask.begin(), bitmask.end()));
}
int main()
{
for (int i = 6; i > 0; i--){
comb(6,i);
}
}
輸出不滿意。
Sound
0C
1C#
2D
3D#
Sound
0C
1C#
2D
D#
0C
1C#
2D
D#
0C
...
你能解釋一下爲什麼你需要使用一個模?這是一個編程挑戰嗎?或作業?或者你只是覺得模數是一種方式? –
這是一個個人項目,所以我不需要以任何特定的方式做任何事情。我真的認爲模數(模數?)是一種選擇。當你想到一個更好的方法,並且如果你想泄漏豆子,繼續。 – user3745829
只是想指出,當我= 0然後我%10 = 0,當我= 1然後我%10 = 1。你不需要做:'(i == 1)||(i%10 == 1)',因爲如果一個條件評估爲真,另一個條件也必須評估爲真(由於荒謬,瘋狂等數學規則)。 –