概述
这道题我最初的思路是,以数组形式分别存储绿化图和藏宝图,然后从绿化图的(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 寻宝!大冒险!所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复