ACM的简单题老师WA,高手来啊!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/25 10:04:36
#include <stdio.h>
#include <stdlib.h>
struct hotel
{
int price;
int number;
int num;
};
int cmp( const void *a ,const void *b)
{
return (*(struct hotel *)a).price >= (*(struct hotel *)b).price ? 1 : 0;
}

int main()
{
int i,j,t,h,re;
struct hotel myh[110];
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&h);
for(j=0;j<h;j++)
scanf("%d%d%d",&myh[j].number,&myh[j].num,&myh[j].price);
qsort(myh,h-1,sizeof(myh[0]),cmp);
scanf("%d",&re);
for(j=0;j<re;j++)
{
int temp;
int k=0;
scanf("%d",&temp);
while(myh[k].num<temp&&k<h)
k++;
if(k>=h)
printf(&q

你的算法有问题啊。
比如这组测试数据
1
2
1 2 100
2 3 90
6
1
2
2
2
1
1
人工推算答案应该是
2
2
1
sorry
sorry
sorry
你的程序答案是:
1
2
sorry
sorry
1
2
题中说“告诉他哪个宾馆还有空的房间并且价格最便宜”
你的程序好像没有成功实现找最便宜的那个,在我给的测试数据中第一组就直接选了1号宾馆,而不是2号,而事实上应该选最便宜的2号。

再试试这组数据
1
3
1 2 100
2 3 90
3 1 30
6
1
2
2
2
1
1
你对照下测试数据,先自己推算答案,然后对照你的程序算出的答案,然后找找你的程序问题所在。