机票问题 连续排列的算法

package SwingPractise;
public class TestToday
{
public static final int status_0 = 0; //没有预定
public static final int status_1 = 1; //已经预定
Seat seat[][] = new Seat[4][7];
public static void main(String args[])
{
TestToday tt = new TestToday();
tt.init();
System.out.println("******************************************************");
tt.modify();
tt.display();
System.out.println("******************************************************");
tt.BookSeat(true,4,0,0,"David");
tt.display();

}

//修改
public void modify()
{
seat[0][1].status = 1;
seat[0][3].status = 1;
seat[0][2].status = 1;
seat[0][4].status = 1;
seat[0][5].status = 1;
seat[0][6].status = 1;
seat[1][3].status = 1;
seat[1][2].status = 1;
seat[1][4].status = 1;
seat[1][5].status = 1;
seat[0][6].status = 1;
}
//初始化
public void init()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<7;j++)
{
seat[i][j] = new Seat();
seat[i][j].row = i;
seat[i][j].line = j;
seat[i][j].status = TestToday.status_0;
}
}
System.out.println("End");

}

//display
public void display()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<7;j++)
{
System.out.println("row = " + seat[i][j].row + " -- line = " + seat[i][j].line
+ " -- status = " + seat[i][j].status + "-- CustName = " + seat[i][j].custNm);
}
}
}
/*
* flag : true 连续座位; flase 非连续座位
* number : 定票的数量
* row : 行号 ; line : 列号
*/
public void BookSeat(boolean flag,int number,int row,int line,String custNm)
{
//连续座位
if(true == flag)
{
int num = 0; //第k行空座位数目
int i_row = 0;
nie:
while(i_row<4)
{
num = 0;
for(int k=0;k<7;k++)
{
if(seat[i_row][k].status == 0)
{
num++;
}
}
if(num>=number)
{
for(int k=0;k<7;k++)
{
if(seat[i_row][k].status == 0)
{
seat[i_row][k].status = 1;
seat[i_row][k].custNm = custNm;
number--;
}
if(number==0)
{
break nie;
}
}
}
else
{
i_row = i_row + 1;
}
}
}
//非连续座位
else
{

}
}

}

class Seat
{
int row = 0;
int line = 0;
int status = 0;
String custNm = "";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值