L1-049 天梯赛座位分配 (20 分)
Posted MoonSky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了L1-049 天梯赛座位分配 (20 分)相关的知识,希望对你有一定的参考价值。
我们用一个二维数组存数据。用g[i][0]存第i个学校的总人数。
然后 我们 以行为学校编号,展开每个学校的人数。
从第一列到最后一列依次由上往下编号。
#include <iostream> using namespace std; const int N = 110; int g[N][N]; int n; int main() cin >> n; int col = -1; for(int i = 1, num; i <= n; i++) cin >> num; g[i][0] = num * 10; col = max(col, num * 10); // 取人数最多的当作列 int pre = 0, num = 0; for(int i = 1; i <= col; i++) for(int j = 1; j <= n; j++) if(i > g[j][0]) continue; // 当前学校的总人数小于当前列就不用再编号了 人都没了 if(pre == j) ++num; // 如果前一个编号的跟现在的编号的来自同一个学校 就要跨一个数 g[j][i] = ++num; pre = j; // 记录当前编号的是哪个学校的,用于对下一位编号 for(int i = 1; i <= n; i++) cout << \'#\' << i; for(int j = 1; j <= g[i][0]; j++) if(j % 10 == 1) cout << endl << g[i][j]; else cout << \' \' << g[i][j]; cout << endl; return 0;
不要羡慕别人喝的饮料有各种颜色,其实未必有你的白开水解渴,
以上是关于L1-049 天梯赛座位分配 (20 分)的主要内容,如果未能解决你的问题,请参考以下文章