请考虑这种情况:
他们可以放置7个申请人和7个地方。我想用这个标准运行一个算法7次:每个申请人都必须放在 ONCE 之一。例如,考虑第一个展示位置:
1
--
A
B
C
D
E
F
G
并且在第二回合中如果A再次选择,A不能放在第一位,因为它已经在第一个回合位置放在第一位:
1 2
-------------
A B
B A
C F
D G
E C
F D
G E
在第二轮中,我认为B已经选择了第二位申请人,因为他没有排在第一位,所以他可以被放在第一位。
我希望每一个选择的申请人都可以放在以前没有的最高位置,每个人都可以进入每个地方
任何人都可以帮我写这样的算法。
答案 0 :(得分:1)
简单算法应始终有效。
WM_COMMAND
的人。有
其中5040个。LRESULT WINAPI YourWindowProc(HWND hWnd, UINT nMsg, WPARAM wp, LPARAM lp)
{
switch (nMsg)
{
case WM_COMMAND:
{
switch (HIWORD(wp))
{
case BN_CLICKED:
{
switch (LOWORD(wp))
{
case IDC_BUTTON1: // or whatever the ID of your button is...
{
// do stuff for button...
break;
}
}
break;
}
}
break;
}
default:
return DefWindowProc(hWnd, nMsg, wp, lp);
}
return 0;
}
并将其添加到sequence
列表。sequence
列表中已有的任何chosen
不冲突的sequence
。sequence
号。chosen
添加到sequence
列表。这是算法的典型输出。右边的数字是非冲突sequence
的计数。
chosen
最后总会有一个有效的选择吗?是的,因为在前六个选项之后,只剩下一个地方放sequence
,一个地方放1 BDCEFGA 5040
2 CADGBFE 1854
3 GBADCEF 579
4 DGBFEAC 144
5 ECFAGDB 26
6 FEGBACD 4
7 AFECDBG 1
等等。所以第七个选择总会有一个选择序列。证明对序列2到6有有效的选择留给读者练习。