pta 天梯賽 L1-049 天梯賽座位分配 (20 分)


天梯賽每年有大量參賽隊員,要保證同一所學校的所有隊員都不能相鄰,分配座位就成為一件比較麻煩的事情。為此我們制定如下策略:假設某賽場有 N 所學校參賽,第 i 所學校有 M[i] 支隊伍,每隊 10 位參賽選手。令每校選手排成一列縱隊,第 i+1 隊的選手排在第 i 隊選手之后。從第 1 所學校開始,各校的第 1 位隊員順次入座,然后是各校的第 2 位隊員…… 以此類推。如果最后只剩下 1 所學校的隊伍還沒有分配座位,則需要安排他們的隊員隔位就坐。本題就要求你編寫程序,自動為各校生成隊員的座位號,從 1 開始編號。

輸入格式:

輸入在一行中給出參賽的高校數 N (不超過100的正整數);第二行給出 N 個不超過10的正整數,其中第 i 個數對應第 i 所高校的參賽隊伍數,數字間以空格分隔。

輸出格式:

從第 1 所高校的第 1 支隊伍開始,順次輸出隊員的座位號。每隊占一行,座位號間以 1 個空格分隔,行首尾不得有多余空格。另外,每所高校的第一行按“#X”輸出該校的編號X,從 1 開始。

輸入樣例:

3
3 4 2

輸出樣例:

#1
1 4 7 10 13 16 19 22 25 28
31 34 37 40 43 46 49 52 55 58
61 63 65 67 69 71 73 75 77 79
#2
2 5 8 11 14 17 20 23 26 29
32 35 38 41 44 47 50 53 56 59
62 64 66 68 70 72 74 76 78 80
82 84 86 88 90 92 94 96 98 100
#3
3 6 9 12 15 18 21 24 27 30
33 36 39 42 45 48 51 54 57 60


模擬;
思路:用一個三維數組存儲第i個學校的第j個隊伍的第k個隊員的編號;
每個學校輪流分配編號,所以內層循環應為學校;同時用變量lasti存儲最后一個編號的學校,
如果跟i相同的話說明還剩一個學校。

代碼如下:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 
 5 int main()
 6 {
 7     int sets[100][10][10];//i個學校j個隊伍第k個人的編號
 8     int n,maxt = -1;
 9     int nums[100];//存儲每個學校的隊伍數量
10     cin >> n;
11     for(int i = 0;i < n;i++)
12     {
13         cin >> nums[i];
14         maxt = max(nums[i],maxt);//記錄最大的隊伍數量
15     }
16     int num = 0,lasti = -1;
17     for(int j = 0;j < maxt;j++)//隊伍數量
18         for(int k = 0;k < 10;k++)
19             for(int i = 0;i < n;i++)//每個學校依次編號
20                 if(j < nums[i])//還沒分配完所有的隊伍
21                 {
22                     if(lasti == i)//說明只剩下一個學校
23                     num += 2;
24                     else
25                     num ++;
26                     sets[i][j][k] = num;
27                     lasti = i;
28                 }
29     for(int i = 0;i < n;i++)
30     {
31         cout << "#" << i + 1 << endl;
32         for(int j = 0;j < nums[i];j++)
33         {
34             for(int k = 0;k < 10;k++)
35             {
36                 cout << sets[i][j][k];
37                 if(k != 9)
38                 cout << " ";
39             }
40             cout << endl;
41         }
42     }
43     return 0;
44 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM