2012-11-24 100 views
1


我想弄清楚如何創建一個複雜的循環,但我沒有找到任何解決方案。

我有2張桌子,每個桌子都可以放置任意數量的人。
我想創建一個循環以獲得所有可能的位置,以便我可以放人!
每個人都有一個身份證,例如5個人。 每個數字都是該人的ID。
我需要知道什麼是可能的方式來安置人!創建一個複雜的循環

table1 table2 

(nobody) 12345 
1  2345 
2  1345 
3  1245 
4  1235 
5  1234 
12  345 
13  245 
14  235 
15  234 
23  145 
24  135 
25  134 
34  125 
35  124 
45  123 
+3

開始公開透明,並告訴我們一個什麼樣的想 – mozillanerd

+0

你的意思是讓所有可能的底座手模擬?桌子是圓的嗎?桌子有多少個座位?訂單是否重要? – phant0m

+0

這看起來像沒有相同數字的向上計數。 –

回答

2
#include <stdio.h> 

int main(void) { 
    unsigned people = 5; 

    printf("There are %u lights.\n", people); 

    for (unsigned i = 0; i < 1u << people; i++) { 
     for (unsigned p = 0; p < people; p++) { 
      if (i >> p & 1u) { 
       printf("%u", p + 1); 
      } 
     } 
     fputs("\t|\t", stdout); 
     for (unsigned p = 0; p < people; p++) { 
      if (!(i >> p & 1u)) { 
       printf("%u", p + 1); 
      } 
     } 
     putchar('\n'); 
    } 

    return 0; 
} 
+0

非常感謝你的工作! – JMBise

+0

但可以給出解釋嗎? – JMBise