《ACM程序设计》书中题目W 第二十三题 漂亮的草坪
来源:互联网 发布:上网监控软件下载 编辑:程序博客网 时间:2024/05/18 14:11
1.简单描述
一个m*n的矩阵,若满足条件:不是所有方块上都长着草;两块剪去草的方块不能相连。则该矩阵为漂亮矩阵,可多次测试该矩阵是否为漂亮矩阵。
2.思路
不漂亮的情况:全为1;上下左右两个相邻元素为0 0。
最开始写的程序
#include<iostream>
using namespace std;
int main()
{
int a[10][10];
int n,m;
while(cin>>n>>m)
{
if(n==0&&m==0)break;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
cin>>a[i][j];
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(a[i][j]==a[i][j+1]||a[i][j]==a[i+1][j])
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
}
return 0;
}
有两个问题所有草坪上的草都没有除的情况无法表示 if(a[i][j]==a[i][j+1]||a[i][j]==a[i+1][j])cout<<"No"<<endl;并未包含所有的“No”情况。
应用flag会避免这种情况,尝试理解了一下答案。
#include<iostream>
using namespace std;
int main()
{
int p[10][10];
int n,m;
int i,j,k;
int flag=1;
while(cin>>n>>m)
{
if(n==0&&m==0)break;
flag=1;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin>>p[i][j];
if(p[i][j]==0)flag=0;
}
}
if(flag==1)
{
cout<<"No"<<endl;
continue;
}
for(k=1;k<m;k++)
{
if(p[0][k]==0&&p[0][k-1]==0)
{
cout<<"No"<<endl;
goto RL;
}
}
for(i=1;i<n;i++)
{
for(j=0;j<m;j++)
{
if(p[i][j]==0&&p[i-1][j]==0)
{
cout<<"No"<<endl;
goto RL;
}
if(j!=0)
{
if(p[i][j]==0&&p[i][j-1])
{
cout<<"No"<<endl;
goto RL;
}
}
}
}
cout<<"Yes"<<endl;
continue;
RL:
continue;
}
return 0;
}//用goto 破坏了结构。
# include <iostream>
using namespace std;
int main()
{
int n, m;
int mp[11][11];
while(cin >> n >> m)
{
if(n == 0 && m == 0)
break;
int flag = 0, ok = 1;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
{
cin >> mp[i][j];
if(j >= 2 && mp[i][j-1] == 0 && mp[i][j] == 0) // zuo
ok = 0;
if(i >= 2 && mp[i-1][j] == 0 && mp[i][j] == 0) // shang
ok = 0;
if(mp[i][j] == 0)
flag = 1;
}
if(flag && ok)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}
3.体会
如果一道题里的循环和条件语句多的话,一般就迷糊了,可能是逻辑思维的能力太差。
- 《ACM程序设计》书中题目W 第二十三题 漂亮的草坪
- 《ACM程序设计》书中题目W(让草坪变美丽吧,Tom!)
- 《acm程序设计》书中题目W-23
- 《ACM程序设计》书中题目--problem w
- 《ACM程序设计》书中题目 W
- 《ACM程序设计》书中题目 W
- 《ACM程序设计》书中题目 W
- 《ACM程序设计》书中题目W
- 《ACM程序设计》书中题目U 第二十一题 漂亮的数字
- ACM程序设计书中题目--W(草地问题)
- 《ACM书中题目》 W
- ACM程序设计书上题目W
- acm书中题目 w-23
- 《ACM程序设计》 W题
- 漂亮的草坪
- 16 漂亮的草坪
- 《ACM程序设计》书中题目
- ACM程序设计书中题目--J(大写字母的更替)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- ssh 信任关系无密码登陆,清除公钥,批量脚本
- git使用教程
- 模拟考试 试题 模拟考核
- 算法笔记_070-BellmanFord算法简单介绍(Java)
- 《ACM程序设计》书中题目W 第二十三题 漂亮的草坪
- CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
- 数码管闪烁
- 数据库学习前瞻
- RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)[转]
- BZOJ3809: Gty的二逼妹子序列
- tomcat server.xml中文版
- RabbitMQ消息队列(五):Routing 消息路由[转]
- 算法笔记_071-SPFA算法简单介绍(Java)