我是靠谱客的博主 美好日记本,最近开发中收集的这篇文章主要介绍cspccf 202206-2 寻宝!大冒险!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    

这道题我最初的思路是,以数组形式分别存储绿化图和藏宝图,然后从绿化图的(0,0)位置开始便利,如果没有超出绿化图范围,并且藏宝图完全符合绿化图,那么结果+1。但是由于L的取值过大,只能AC 70%。代码如下:

#include<bits/stdc++.h>
using namespace std;
long long n,l,s;//树的棵树,绿化图和藏宝图大小
int a[2005][2005]={0};
int b[2005][2005]={0};
int main()
{
	cin>>n>>l>>s;
	int count = 0;//最后结果 
	bool flag = true; 
	for(int i=1;i<=n;i++) //按照题目要求将绿化图初始化 
	{
		int x,y;
		cin>>x>>y;
		a[x][y]=1;
	}
	for(int i=s;i>=0;i--) //输入藏宝图 
		for(int j=0;j<=s;j++) 
			cin>>b[i][j];
			
	for(int i=0;i<=l;i++)  //从初始位置开始遍历 
	{
		for(int j=0;j<=l;j++)
		{
			if(b[0][0]==a[i][j] && i+s<=l && j+s<=l) //如果藏宝图的 0,0 等于绿化图的某一点并且不超边界 
			{
				for(int k=0;k<=s;k++) //遍历藏宝图,如果完全符合则+1,否则退出进行下次遍历 
				{
					for(int h=0;h<=s;h++)  
					{
						if(b[k][h]==a[i+k][j+h]) continue;
						
						else{
							flag=false;
							break;
						} 
					}
					if(!flag) break;
				}
				if(flag) count++;
			}
			flag = true;
		}
	}
	cout<<count;
	return 0;
 }

那么如何避免数组过大无法通过全部测试点的问题,可以借鉴:(94条消息) 第26次ccf认证第二题:寻宝!大冒险!_Sunnyztg的博客-CSDN博客_csp第二题难度

最后

以上就是美好日记本为你收集整理的cspccf 202206-2 寻宝!大冒险!的全部内容,希望文章能够帮你解决cspccf 202206-2 寻宝!大冒险!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部