标签:tar 分配 cst ++ 函数 规模 else 认证考试 题解
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址
用一个vector记录每一排还剩了多少个座位,初始为5。
用了两个子函数让程序的结构更加清晰。
C++
#include <cstdio> #include <vector> using namespace std; vector<int> seats(20,5); void printSeats(int row, int num) { for(int i=1; i<=num; i++) { printf("%d ", row*5+i+5-seats[row]); } } void requstSeats(int num) { for(int i=0; i<20; i++) { if(seats[i] >= num) { printSeats(i, num); seats[i] -= num; num = 0; } } int i = 0; while(num) { if(seats[i] > 0) { if(num <= seats[i]) { printSeats(i, num); num = 0; seats[i] -= num; } else { printSeats(i, seats[i]); num -= seats[i]; seats[i] = 0; } } i++; } printf("\n"); } int main() { int N; scanf("%d", &N); int req; for(int n=0; n<N; n++) { scanf("%d", &req); requstSeats(req); } }
标签:tar 分配 cst ++ 函数 规模 else 认证考试 题解
原文地址:http://www.cnblogs.com/meelo/p/7638686.html