首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言模火车售票系统解决办法

2012-03-07 
c语言模火车售票系统15**********737726**********7478*************过道*********37**********757948****

c语言模火车售票系统
1         5     **********73       77
2         6     **********74       78
*************过道*********
3         7     **********75       79
4         8     **********76       80

四个位一包厢。售票一伙的乘客应尽量靠近。

算法?

[解决办法]
#include "stdafx.h "
#include <deque>
#include <iostream>
#define SEAT_END 80
#define SEAT_BEGIN 1
using namespace std;
struct Seat
{
int seating[4];
int empty_seating;
};
int _tmain(int argc, _TCHAR* argv[])
{
deque <Seat> seats[5];
int count;
count = (SEAT_END - SEAT_BEGIN +1) / 4;
int mods;
mods = (SEAT_END - SEAT_BEGIN +1) % 4;
if (mods != 0)
{
Seat seatCur;
for (int i =0; i < mods; i++)
{
seatCur.seating[i] = SEAT_END -mods +i;
}
for (int i = mods; i < 4; i ++)
{
seatCur.seating[i] = 0;
}
seatCur.empty_seating = mods;
seats[mods].push_back(seatCur);
}
Seat seat_cur;
seat_cur.seating[0] = SEAT_BEGIN;
seat_cur.seating[1] = SEAT_BEGIN +1;
seat_cur.seating[2] = SEAT_BEGIN +4;
seat_cur.seating[3] = SEAT_BEGIN + 5;
seat_cur.empty_seating = 4;
seats[4].push_back(seat_cur);
for (int i = 0; i < count; i ++)
{
for(int j = 0; j < 4; j ++)
{
seat_cur.seating[j] += 2;
}
seats[4].push_back(seat_cur);
}
int NUM;
cin> > NUM;
if (NUM> =4)
{
int times;
times = NUM / 4;
for (int i = 0; i < times ; i++)
{
seat_cur = seats[4].front();
seats[4].pop_front();
seat_cur.empty_seating = 0;
seats[0].push_back(seat_cur);
}
NUM = NUM %4;
}
switch(NUM)
{
case 0:
break;
case 1:
if (seats[NUM].size() != 0)
{
seat_cur = seats[NUM].front();
seat_cur.empty_seating -=NUM;
seats[NUM].pop_front();
seats[seat_cur.empty_seating].push_back(seat_cur);
break;
}
case 2:
if (seats[NUM].size() != 0)
{
seat_cur = seats[NUM].front();
seat_cur.empty_seating -=NUM;
seats[NUM].pop_front();
seats[seat_cur.empty_seating].push_back(seat_cur);
break;
}
case 3:
if (seats[NUM].size() != 0)
{
seat_cur = seats[NUM].front();
seat_cur.empty_seating -=NUM;
seats[NUM].pop_front();
seats[seat_cur.empty_seating].push_back(seat_cur);
break;
}
default:
if (seats[1].size() < NUM)
{
cout < < "余票不足 " < <endl;
}
else
{
for (int i = 0 ; i < NUM ; i ++)
{
seat_cur = seats[1].front();
seat_cur.empty_seating = 0;
seats[1].pop_front();
seats[0].push_back(seat_cur);
}
}
}
return 0;
}
這樣行嗎..
有缺陷..

热点排行