#include <stdio.h>
#include <stdlib.h>
typedef struct{
int ID;
int Dis;
}ROOM;
int cmp(const void*a,const void*b)
{
ROOM *p1=(ROOM*)a,*p2=(ROOM*)b;
return p1->Dis > p2->Dis ? 1 : -1;
}
int main()
{
int n,i;
while((scanf("%d",&n))!=EOF){
ROOM data[100];
int flag=0;
for(i=0;i<n;i++){
int a[15][15];
int id,dis,r,c;
scanf("%d%d%d%d",&id,&dis,&r,&c);
int j,p,count=0;
getchar();
for(j=0;j<r;j++){
char *s=(char*)malloc(sizeof(char)*(c+1));
gets(s);
for(p=0;p<c;p++){a[j][p]=s[p]-'0';}
for(p=0;p<c;p++)
{
if(j==0&&p==0){if(a[j][p+1]==0&&a[j][p]==0)count++;}
if(j==0&&p==c-1){if(a[j][p-1]==0&&a[j][p]==0)count++;}
if(j==0&&p>0&&p<c-1){if(a[j][p-1]==0&&a[j][p+1]==0&&a[j][p]==0)count++;}
if(j>0&&p==0){if(a[j-1][p]==0&&a[j][p+1]==0&&a[j][p]==0)count++;}
if(j>0&&p==c-1){if(a[j-1][p]==0&&a[j][p-1]==0&&a[j][p]==0)count++;}
if(j>0&&p>0&&p<c-1){if(a[j][p+1]==0&&a[j-1][p]==0&&a[j][p-1]==0&&a[j][p]==0)count++;}
}
}
//printf("%d\n",count);
if(count){data[flag].ID=id;data[flag].Dis=dis;flag++;}
}
if(!flag)printf("Bad Luck,Rocker!\n");
else{
qsort(data,flag,sizeof(ROOM),cmp);
printf("%d\n",data[0].ID);
}
}
system("pause");
return 0;
}
咳咳 菜鸡进阶的路上总要装点逼
原题http://acm.ecnu.edu.cn/problem/2015/
一开始没有注意到矩阵每个元素间没有空格直接用了scanf简直傻透了。。。。没有全部输入完毕就判断六个if条件也是很危险啊啊喂 这个bug也找了很久。。。
话说现在真的是很害怕未经初始化的内存啊。。。memset,memcpy留下的阴影(滑稽脸)
(这个排版是要逼死强迫症吗!!!)
新年快乐~第一篇博客
本文通过一个具体的ACM竞赛题目,详细介绍了使用C语言解决该问题的过程。文章中包括了结构体定义、自定义比较函数及qsort排序函数的应用等知识点,并分享了解题过程中的调试经验。
1008

被折叠的 条评论
为什么被折叠?



