应该是算法问题,还希望大家给我一个思路

chezeqiang 2010-01-18 05:19:33
问题是这样的
现在我老板让我做一个自动排座位的功能.
就是说每招收一个学生.程序就自动把这名学生安排到某个教室的某个座位上.
排座位的规则是这样的:
一间教室.假如有5排座位.
每排有10个座位.
从每一排的中间往两边安排座位
也就是说:
第一个报名的学生他会被自动分配到第一排的第5个座位上,
第二个报名的学生他会被自动分配到第一排的第6个座位上,
第三个报名的学生他会被自动分配到第一排的第4个座位上,
第四个报名的学生他会被自动分配到第一排的第7个座位上,
依次类推。假如一排的10个座位都已经坐满。
那么就从第下一排开始。
排座方式一样。



不知道我这样叙述是否清楚,我现在还没有头绪。csdn上高手众多,还希望大家帮助,给我一个思路。
谢谢!


...全文
194 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
一直活在明天 2010-01-19
  • 打赏
  • 举报
回复
看看还要贴东西。
GSDN001 2010-01-19
  • 打赏
  • 举报
回复
难道又是倒分?
GSDN001 2010-01-19
  • 打赏
  • 举报
回复
楼主要的不是思路,要的是代码
挂羊头卖狗肉,楼主真垃圾。
chezeqiang 2010-01-18
  • 打赏
  • 举报
回复
谢谢各位耐心的解释。
我想我已经明白了。
谢谢!
hhc123 2010-01-18
  • 打赏
  • 举报
回复
1  5  (10-0)/2   (当第一个人来报名的时候第一排还有10个座位吧,那他坐第5位)
2  6  (10-1)/2+2  (第二个进来报名时那就是说还有9个座位报名号为双的时候加,9/2+(2你为第二个来的)
3  4  (10-2)/2    报名号为单时不用加2 (你是第三个那就是说还有8个位有一个是第三个的)以此类推
4  7  (10-3)/2+4  (4是指你是第4个来的)
5  3  (10-4)/2
6  8  (10-5)/2+6
7  2  (10-6)/2
8  9  (10-7)/2+8
9  1  (10-8)/2
10 10 10 第一排最后一个来的算都不用算了,就是最后一位了。
写了这么清楚了你要是不会的话那我就没办法了。我这个算法应该很简单了
O15013245O 2010-01-18
  • 打赏
  • 举报
回复
根据高中学的函数,把座位看作x轴,名次是y轴,看出是个轴对称图形,根据点求出两个函数式,汗一个最后结果,这里的名次是从1开始的
private string Test(int Rank)
{
int Row = Rank / 11;
double Col = Rank % 11;
if (Col % 2 == 0)
Col = 5 + Col / 2;
else
Col = 5.5 - Col / 2;
return Row.ToString() + "排" + Col.ToString() + "坐";
}
hhc123 2010-01-18
  • 打赏
  • 举报
回复
实在太无聊啊
1  5  10/2 15 10+10/2
2  6  9/2+2 16 10+9/2+2
3  4  8/2 ........
4  7  7/2+4 ........
5  3  6/2
6  8  5/2+6
7  2  4/2
8  9  3/2+8
9  1  2/2
10 10 2/2+9

算法实在是太多了,自己想

hhc123 2010-01-18
  • 打赏
  • 举报
回复
1  5  5-0
2  6  5+1
3  4  6-2
4  7  4+3
5  3  7-4
6  8  3+5
7  2  8-6
8  9  2+7
9  1  9-8
10 10 1+9
这样更明显吧

hhc123 2010-01-18
  • 打赏
  • 举报
回复
1 5 5+0
2 6 5+1
3 4 6-2
4 7 4+3
5 3 7-4
6 8 3+5
7 2 8-6
8 9 2+7
9 1 9-8
10 10 10
guyehanxinlei 2010-01-18
  • 打赏
  • 举报
回复
Friendly Up!
十八道胡同 2010-01-18
  • 打赏
  • 举报
回复
其实对于第几个学生来说他的座位是固定的。


数据结构!
十八道胡同 2010-01-18
  • 打赏
  • 举报
回复
当你想清楚怎么存贮这个座位表的时候 你的算法就出来了
卧_槽 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 chezeqiang 的回复:]
引用 7 楼 hhc123 的回复:
5
6
4
7
3
8
2
9
1
10


你好。也许是我比较愚笨。
没有看懂你的意思。
假如我第一个学生和第二个学生已经入座了。
怎么让程序把第三个学生安排到第4个座位呢?
[/Quote]
楼主你还是先别考虑怎么把第3个学生安排到第4个座位。
你还是先考虑你要用什么数据结构来表述这个座位表吧。
chezeqiang 2010-01-18
  • 打赏
  • 举报
回复
数据库里有一张表。
专门记录学生的ID,该学生入座的教室,和该学生入座的座位号
chezeqiang 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hhc123 的回复:]
5
6
4
7
3
8
2
9
1
10
[/Quote]

你好。也许是我比较愚笨。
没有看懂你的意思。
假如我第一个学生和第二个学生已经入座了。
怎么让程序把第三个学生安排到第4个座位呢?
lzsh0622 2010-01-18
  • 打赏
  • 举报
回复
数据模型:
(1)横坐标平移5个单位
(2)循环递增 int i=1; i<=5; i++
(3)负正交叉
hhc123 2010-01-18
  • 打赏
  • 举报
回复
5
6
4
7
3
8
2
9
1
10
hhc123 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hhc123 的回复:]
单号
就是前一个人的座位号-1

[/Quote]双号是前一个人的座位号+1
卧_槽 2010-01-18
  • 打赏
  • 举报
回复
哦,很简单么,就是5,6,4,7,3,8,2,1,10么。
直接循环这个数列就好了。
shighui 2010-01-18
  • 打赏
  • 举报
回复
是的,简单算法问题,你能说得这么清楚,我想用代码实现应该不是什么难事吧。试试!
加载更多回复(3)

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧