灌水

2.灌水 - 蓝桥云课 (lanqiao.cn)icon-default.png?t=N7T8https://www.lanqiao.cn/problems/7938/learning/?problem_list_id=25&page=1

#include <iostream>
#include <algorithm>
using namespace std;
int ans=1;
int px[4]={-1,0,1,0};
int py[4]={0,-1,0,1};
char a[35][45];
void dfs(int x,int y)
{
  for(int i=0;i<4;i++)
  {
    int p=x+px[i];
    int q=y+py[i];
//    if(a[p][q]!='0')continue; //第14到16行的作用 跟 17到21行的作用一样
//    else a[p][q]='2',ans++;
//    dfs(p,q);
    if(a[p][q]=='0')
    {
      a[p][q]=2;
      ans++;
      dfs(p,q); //对于每个变成2的数都进行一次调用
    }
  }
}

int main()
{
  for(int i=0;i<30;i++)scanf("%s",a[i]);//每一行是一个字符串,输入字符数组是不需要使用取地符
  a[0][0]='2';//从0,0的位置开始,不一定要把第一行第一列全部赋值为2
  dfs(0,0);
  printf("%d",ans);
  return 0;
}

        以上代码是看过大佬写的代码之后,经过一定的理解之后写出的代码,写的过程中还是出现一些小问题,就是17到21行那一块,理解的还不是很透彻。

        

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
	long long arr1[50][50];
	long long count=0;
	for(int i=1;i<=30;i++)
	{
		for(int j=1;j<=40;j++)
		{
			cin>>arr1[i][j];
		}
	}
	
	cout<<endl;
	
	arr1[1][1]=2;
	int n=100;
	while(n--)
	{
		for(int i=1;i<=30;i++)
		{
			for(int j=1;j<=40;j++)
			{
				if(arr1[i][j]==2)
				{
					if(arr1[i-1][j]==0)arr1[i-1][j]=2;
					if(arr1[i+1][j]==0)arr1[i+1][j]=2;
					if(arr1[i][j-1]==0)arr1[i][j-1]=2;
					if(arr1[i][j+1]==0)arr1[i][j+1]=2;
				}
			}
		}
	}
	
	for(int i=1;i<=30;i++)
	{
		for(int j=1;j<=40;j++)
		{
			if(arr1[i][j]==2)count++;
		}
	}
	cout<<count;
	return 0;
}

        以上代码是在考场上想出的笨拙思路,但是没完成,后期再加工写出的代码。刚开始就是想着输入30行40列,但是由于审题不仔细再加上基础知识不牢固,导致输入时就出现了问题,题目中给出的数据是紧挨着的,不像平时数据输入是有空格的,所以就一直卡在这里,感觉自己写的代码没问题,但是输入的时候就没法输入。后来经过别人的提醒,发现了这个问题,但在当时我也没想出什么应对策略,导致最后没有提交。上面的代码实现其实是比较笨的,不值得大家学习,就单纯的记录一下自己当时对于这道题目的处理办法,显然是不明智的。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值