PAT1055 集体照 (25 分)【3/6通过】
生活随笔
收集整理的這篇文章主要介紹了
PAT1055 集体照 (25 分)【3/6通过】
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目
后3個(gè)測試點(diǎn)過不去
代碼
#include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; class Stu { public:int height = 0;string name; }; class Row { public:int num;//這排學(xué)生人數(shù)int curSize = 0;Stu stu[10000];//這排的學(xué)生 }; int sortName(Stu a1, Stu a2) {return a1.name < a2.name; } int sortHeight(Stu a1, Stu a2) {return a1.height > a2.height; } int main() {Stu stu[10000];Row row[10];int totalStu;int totalRow;cin >> totalStu >> totalRow;if (totalStu > 5)cout<<"?";//debug//輸入int i;for (i = 0; i < totalStu; i++){cin >> stu[i].name;cin >> stu[i].height;}//姓名、身高排序sort(stu, stu + totalStu, sortName);sort(stu, stu + totalStu, sortHeight);//分排int stuNumOneRow = totalStu / totalRow;int stuNumFirstRow = totalStu / totalRow + totalStu % totalRow;int j;int in = 0;int mid;int direction;for (i = 0; i < totalRow; i++)//第i排{direction = 1;if (i == 0)row[i].num = stuNumFirstRow;//當(dāng)前排學(xué)生總數(shù)else row[i].num = stuNumOneRow;mid = row[i].num / 2;//中間位置row[i].stu[mid] = stu[in];//放進(jìn)中間學(xué)生in++;row[i].curSize++;if (row[i].curSize == row[i].num)continue;while (1){if (mid - direction<0)break;row[i].stu[mid - direction] = stu[in];in++;row[i].curSize++;if (row[i].curSize == row[i].num)break;row[i].stu[mid + direction] = stu[in];in++;row[i].curSize++;if (row[i].curSize == row[i].num)break;direction++;}}//輸出for (i = 0; i < totalRow; i++){for (j = 0; j < row[i].num; j++){cout << row[i].stu[j].name;if (j != row[i].num - 1)cout << " ";}cout << endl;}//cout << endl;system("pause");return 0; }總結(jié)
以上是生活随笔為你收集整理的PAT1055 集体照 (25 分)【3/6通过】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT1054 求平均值 (20 分)【
- 下一篇: PAT1057 数零壹 (20 分)