| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 499 人关注过本帖
标题:请教!!!纠正错误
取消只看楼主 加入收藏
jintiangu
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-6-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
请教!!!纠正错误
题目要求:一直不去自修室的Roker最近迫于学习压力决定每天都要去自修,鉴于自修室多多,何必与人争挤,所以Rocker要坐在左右一个座位都没人,如果不是第一排,那么他的前面一个座位也没有人的位置上,当然Rocker也可以坐在墙边但前面或左边或右边有座位的话要没有人才可以。
Rocker眼力异常好,只要在门口瞟一眼就可以知道哪个位置上有人哪个没有人,但Rocker大脑毕竟不是电脑,可以迅速计算出这间教室有没有符合他要求的位置。

Input

输入有多个case,每个case第一行有一个数n表示自修室的总间数,接下来描述n( n <= 100 )个自修室的座位情况,接下来按照Rocke对于每间自修室,第一行有四个整数 ID Dis R C ( Dis <= 2000000, 5 <= R,C <= 15),分别是教室的门号,教室距离Rocker寝室的距离,座位的行数以及列数。接下来是一个R*C的01矩阵,
0表示该座位没有人,1表示有人。(每间教室ID,Dis互异),Rocker按照距离远近依次找教室自修,去距离寝室最近的一间满足他条件的教室自修。

Output

每个case输出一行,如果Rocker可以自修的教室ID,若无教室符合条件,输出"Bad Luck,Rocker!"


#include<stdio.h>
void main()
{
    int n,ID,Dis,R,C,k,t,p,i,j;
    int N[15][15];
    int M[100]={0};
    while(scanf("%d",&n)==1)
    {
     p=0;
    for(k=1;k<=n;k++)
    {
       scanf("%d %d %d %d",&ID,&Dis,&R,&C);
     
        for(i=0;i<R;i++)
         for(j=0;j<C;j++)
          scanf("%d",&N[i][j]);      /*输入矩阵*/

        for(i=1;i<R;i++)
         if(N[i][0]=='0'&&N[i][1]=='0'&&N[i-1][0]=='0')
         {p++;M[k]=ID;}                                    /*看第一列有没有合适的座位*/
        for(i=1;i<R;i++)
         if(N[i][C-1]=='0'&&N[i][C-2]=='0'&&N[i-1][C-1]=='0')
         {p++;M[k]=ID;}                                    /*看最后一列有没有合适的座位*/

        for(j=1;j<C-1;j++)
         if(N[0][j]=='0'&&N[0][j-1]=='0'&&N[0][j+1]=='0')
         {p++;M[k]=ID;}                                   /*看第一行有没有合适的座位*/

        for(i=1;i<R;i++)
        for(j=1;j<C-1;j++)
         if(N[i][j]=='0'&&N[i][j-1]=='0'&&N[i][j+1]=='0'&&N[i-1][j]=='0')
         {p++;M[k]=ID;}                               /*看除第一列、最后一列、第一行以外,有没有合适的座位*/                              

         if(N[0][0]=='0'&&N[0][1]=='0')
         {p++;M[k]=ID;}                                /*看第一排第一个座位合不合适*/
         if(N[0][C-1]=='0'&&N[0][C-2]=='0')
         {p++;M[k]=ID;}                                 /*看第一排最后一个座位合不合适*/
    }

    if(p==0)  printf("Bad Luck,Rocker!\n");
    else
    {for(i=1;i<n;i++)
            for(k=1;k<n-i;k++)
                if(M[k]>M[k+1])
                {t=M[k];M[k]=M[k+1];M[k+1]=t;}  /*将M[k]从小到大排序*/
   
                    if(M[1]!=0)
                  printf("%d\n",M[1]);
                   else
                      {
                   while(M[k]==0)
                k++;
                       printf("%d\n",M[k]);
                       }
          }

    }
}
搜索更多相关主题的帖子: 自修 学习压力 
2010-06-20 23:15
快速回复:请教!!!纠正错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033012 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved