ylxd41
2016-12-09 06:33
采纳率: 50%
浏览 848
已采纳

c语言指针问题,谢谢大家

各位,有时间可以帮我看一下如何使用这个指针呢?34行

问题:房间排序
为了更好地接待在这期间来自世界各地的参观者,如何合理安排各宾馆的住房问题提到了日程。组委会已接到了大量的客户住宿定单,每张定单的内容包括要住宿的房间数,开始住宿时间和要住的天数。为了便于整个城市各宾馆的管理,组委会希望对这些定单进行安排,目的是用尽可能少的房间来满足这些定单,以便空出更多的房间用于安排流动游客。

                假设:某个定单上的游客一旦被安排到某房间,在他预定住宿的期间内是不换房间的。为了简化描述,定单上的开始住宿时间为距离现在的第几天。例如,定单为(10,30,5)表示游客要求使用10个房间,第30天开始连住5天。
                第一行:T 表示有T组测试数据

每组测试数据第一行:N 表示定单数
每组测试数据接下来有N行,每行有三个整数 A B C 表示房间数,开始住宿时间和天数
1<=T<=100
1<=N<=10000 1<=A<=10 1<=B<=180 1<=c<=10
输出
输出一个整数,为满足所有定单要求的最少房间数。

思路:本题只和开始日期A和结束日期B之间的关系有关
1:先求出最小截止日期
2:将输入的数据按开始日期进行从小到大排序
3: 若是A A>=B 分二种情况:1,total<输入元素的房间数,则total=输入元素的房间数
2,total>输入元素的房间数,则total=total+0

代码如下:(34行不会声明合适的指针使其指向stu[].deadline,并可以通过函数循环至stu[1].deafline stu[2].deadline)

// 房间安排.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

int maopao(int*p,int n);
int _tmain(int argc, _TCHAR* argv[])
{
int s=0;
int n=0;
int i=0;
struct hotel
{
int room;
int date;
int during;
int deadline;
};
hotel stu[10000];
printf("请输入测试数据组数:\n");
scanf("%d",&n);
printf("请输入每组的订单数:\n");
scanf("%d",&s);
while(n--)
{
for(i=0;i {
scanf("%d",&stu[i].room);
scanf("%d",&stu[i].date);
scanf("%d",&stu[i].during);
stu[i].deadline=stu[i].date+stu[i].during;
}
for(int y=0;y {
for(int u=0;u {
if(stu[u].date>stu[u+1].date)
{
hotel temp=stu[u];
stu[u]=stu[u+1];
stu[u+1]=temp;
}
}
}
int*p;
p=; //此处已经将结构按起始日期从大到小进行排序了4 9 6 3 10 4 3,12,6
int re=maopao(p,s);

int w=0;
int total;
while(w {
if(stu[w].date total=total+stu[w].room;
if(stu[w].date>=re&&total>stu[w].room)
total=total+0;
if(stu[w].date>=re&&total<stu[w].room)
total=stu[w].room;
w++;
}
printf("%d\n",total);
}
return 0;

}

int maopao(int*p,int n)
{
for(int i=0;i for(int q=0;q {
if(*(p+q)>(p+q+1))
{
int num=
(p+q);
(p+q)=(p+q+1);
*(p+q+1)=num;
}
}
return *(p+0);
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • bdmh 2016-12-09 06:35
    已采纳

    看我之前给你的回复,声明结构体指针数组,每次通过指针加1,就指向了下一个对象

    点赞 打赏 评论
  • shen_wei 2016-12-09 09:20
     hotel stu[10000]; 这样已经是数组,那就直接数组排序就好。。。
    
    点赞 打赏 评论

相关推荐 更多相似问题