| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 620 人关注过本帖
标题:漂亮的草坪
只看楼主 加入收藏
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
结帖率:66.67%
收藏
已结贴  问题点数:15 回复次数:3 
漂亮的草坪
漂亮的草坪
时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:90            测试通过:31

描述


Tom的花园里有一个草坪,他把它分成N*M个方块。一开始,所有的广场上都长着草。他剪去一些方块上的草,并认为仅符合这两个条件,这块草坪才算漂亮:
(1)不是所有的方块都长着草。
(2)两块剪去草的方块不能相连。
如果两块共一条边,那么就算是连着的。现在问题来了:Tom的草坪漂亮吗?
 
         
         
         
         

Tom的草坪

输入


输入包含多个测试案例!
每个测试案例包含两个整数N,M(1<=N,M<=10)开始,这两个数占一行,中间用空格隔开。接下来是Tom的草坪的描述。有N行,每行有M个整数,用空格隔开。0表示该方块被剪去草,1表示该方块长着草。
一行上如果是N=0且M=0,表示输入的结束,这行不要处理。

输出


一个测试用例输出一行。
如果这块草坪是漂亮的,输出“Yes”,否则输出“No”(不包括引号)。

样例输入


2 2
1 0
0 1
2 2
1 1
0 0
2 3
1 1 1
1 1 1
0 0

样例输出


Yes
No
No
请求各位怎么做?#include <iostream>
using namespace std;
int main()
{
 int n,m,a[10][10],j,i,k=0,c;
 while(cin>>n>>m,n||m)
 {
     for(i=0;i<n;i++)//3330;
         for(j=0;j<m;j++)
             cin>>a[i][i];
         for(i=0;i<n;i++)
         {
             for(j=0;j<m;j++)
             {
                 if(a[i][j]==1)
                     k++;k=0;
                 if(k<(n*m))
                 {   
                     if(i==1||j==1||i==n-1||j==m-1)
                     {
                         if(a[i][j]!=a[i-1][j]&&a[i][j]!=a[i+1][j]&&a[i][j]!=a[i][j-1]&&a[i][j]!=a[i][j+1])
                         { c=1;break;}
                         else
                         { c=0;break;}
                     }
                     if(i>1&&j>1&&i<n-1&&j<m-1)
                     {
                     if(a[i][j]!=a[i-1][j]==0&&a[i][j]!=a[i+1][j]==0&&a[i][j]!=a[i][j-1]==0&&a[i][j]!=a[i][j+1]==0)
                               c=1;
                     }
                     else
                     {c=0;break;}
                 }
                 else
                     c=0;
             }
             if(c==1)
             {cout<<"yes"<<endl;break;}
             else if(c==0)
             {cout<<"no"<<endl;break;}
         }
 }

            

 
  return 0;
}
哪里错了????
搜索更多相关主题的帖子: 草坪 Java 漂亮 
2013-03-13 19:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:15 
哪里错了?用你的代码测试那个样例输入,得到的结果和样例输出不一致呀!
你的代码太长,只看了前几行,cin>>a[i][i] 应该是 cin>>a[i][j] 吧?!

程序代码:
#include <iostream>
using namespace std;

int main()
{
    for( size_t n,m; cin>>n>>m && n && m; )
    {
        int sod[10][10];
        for( size_t i=0; i<n; ++i )
            for( size_t j=0; j<m; ++j )
                cin >> sod[i][j];

        bool result = true;
        bool found0 = false;
        for( size_t i=0; result && i<n; ++i )
            for( size_t j=0; result && j<m; ++j )
            {
                if( sod[i][j] == 0 )
                {
                    found0 = true;

                    if( i+1<n && sod[i+1][j] == 0 )
                        result = false;

                    if( j+1<m && sod[i][j+1] == 0 )
                        result = false;
                }
            }

        cout << ( result&&found0 ? "Yes" : "No" ) << endl;
    }

    return 0;
}

2013-03-14 08:48
qiqike
Rank: 1
等 级:新手上路
帖 子:6
专家分:7
注 册:2013-3-15
收藏
得分:0 
....
2013-03-15 18:23
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
收藏
得分:0 
#include<iostream>
using namespace std;
int main()
{
int m,n,i,j,k,p;
long a[100][100];
while(cin>>m>>n)
{
   p=0;
   k=0;
   if(m==0 && n==0) break;
   for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
    {
     cin>>a[i][j];
     if(a[i][j]==1)k++;
    }
    if(k==m*n) {cout<<"No"<<endl;continue;}
    for(i=1;i<=m;i++)
     for(j=1;j<=n-1;j++)
     {if(a[i][j]==0 && a[i][j+1]==0) {p=1; goto Turn;}}
    for(i=1;i<=m-1;i++)
     for(j=1;j<=n;j++)
     {if(a[i][j]==0 && a[i+1][j]==0) {p=1; goto Turn;}}
Turn:if(p==1) cout<<"No"<<endl;
else cout<<"Yes"<<endl;
}
return 0;
}
来在网络。
2013-10-24 20:24
快速回复:漂亮的草坪
数据加载中...
 
   



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

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