蓝桥杯 历届真题 剪邮票(枚举+判断连通性)
2018-03-29 15:52
253 查看
题目描述:如【图1.jpg】, 有12张连在一起的12生肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。
请你计算,一共有多少种不同的剪取方法。
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};
int mp[10][10];
int Find;
void dfs(int x,int y)
{
if(Find==5)
return ;
int nx,ny;
for(int k=0; k<4; k++)
{
nx=dx[k]+x;
ny=dy[k]+y;
if(mp[nx][ny]==1)
{
mp[nx][ny]=-1;
Find++;
dfs(nx,ny);
}
}
}
int main()
{
int sum=0;
for(int a=1; a<=12; a++)
for(int b=a+1; b<=12; b++)
for(int c=b+1; c<=12; c++)
for(int d=c+1; d<=12; d++)
for(int e=d+1; e<=12; e++)
{
memset(mp,-1,sizeof(mp));
mp[a/5+1][(a-1)%4+1]=1;
mp[b/5+1][(b-1)%4+1]=1;
mp[c/5+1][(c-1)%4+1]=1; //get取下标的小技巧
mp[d/5+1][(d-1)%4+1]=1;
mp[e/5+1][(e-1)%4+1]=1;
Find=1;
mp[a/5+1][(a-1)%4+1]=-1;
dfs(a/5+1,(a-1)%4+1);
if(Find==5)
sum++;
}
printf("%d\n",sum);
return 0;
}
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。
请你计算,一共有多少种不同的剪取方法。
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};
int mp[10][10];
int Find;
void dfs(int x,int y)
{
if(Find==5)
return ;
int nx,ny;
for(int k=0; k<4; k++)
{
nx=dx[k]+x;
ny=dy[k]+y;
if(mp[nx][ny]==1)
{
mp[nx][ny]=-1;
Find++;
dfs(nx,ny);
}
}
}
int main()
{
int sum=0;
for(int a=1; a<=12; a++)
for(int b=a+1; b<=12; b++)
for(int c=b+1; c<=12; c++)
for(int d=c+1; d<=12; d++)
for(int e=d+1; e<=12; e++)
{
memset(mp,-1,sizeof(mp));
mp[a/5+1][(a-1)%4+1]=1;
mp[b/5+1][(b-1)%4+1]=1;
mp[c/5+1][(c-1)%4+1]=1; //get取下标的小技巧
mp[d/5+1][(d-1)%4+1]=1;
mp[e/5+1][(e-1)%4+1]=1;
Find=1;
mp[a/5+1][(a-1)%4+1]=-1;
dfs(a/5+1,(a-1)%4+1);
if(Find==5)
sum++;
}
printf("%d\n",sum);
return 0;
}
相关文章推荐
- 蓝桥杯 第四届C/C++预赛真题(5) 前缀判断(水题)
- 蓝桥杯真题 前缀判断
- 蓝桥杯 历届真题之剪格子(dfs)
- 拦截匪徒 (枚举+判断图的连通性)
- 蓝桥杯 历届真题 高斯日记
- 蓝桥杯真题 剪邮票 题解
- 蓝桥杯 历届真题
- 历届真题 蓝桥杯 旋转魔法(模拟)
- 蓝桥杯 历届试题 横向打印二叉树(java 递归+判断)
- 蓝桥杯 历届真题 带分数
- 蓝桥杯2014年以前JAVA历年真题及答案整理——闰年判断
- 蓝桥杯软件类个人赛历届真题汇总(资料整理)
- DFS-带分数(蓝桥杯历届真题)
- 蓝桥杯 历届真题 四平方和
- 蓝桥杯 历届真题 连号区间(找规律)
- 蓝桥杯 历届真题之剪格子(dfs)
- 蓝桥杯C++B组历届决赛真题
- 蓝桥杯官网练习系统历届真题详解
- 蓝桥杯 历届真题之剪格子(dfs)
- 蓝桥杯 历届真题之剪格子(dfs)