比赛 |
202103省实验桐柏一中普及组联赛 |
评测结果 |
WWWWWWWWWW |
题目名称 |
亡羊补牢,未为迟也 |
最终得分 |
0 |
用户昵称 |
该账号已注销 |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2021-03-22 20:57:33 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,tx[10]={0,-2,-1,1,2,2,1,-1,-2},ty[10]={0,1,2,2,1,-1,-2,-2,-1},a[20][20]={0},ans[20]={0};
int dfs(int x,int y,int u)
{
bool p=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]==0){
p=1;
break;
}
}
}
if(p==0){
ans[u]++;
return 0;
}
if(x+1<=n)
{
for(int i=1;i<=8;i++)
if(x+1+tx[i]<=n&&y+ty[i]<=n&&x+1+tx[i]>0&&y+ty[i]>0){
a[x+1+tx[i]][y+ty[i]]=1;
dfs(x+2,y,u+1);
for(int i=1;i<=8;i++)
if(x+1+tx[i]<=n&&y+ty[i]<=n&&x+1+tx[i]>0&&y+ty[i]>0){
a[x+1+tx[i]][y+ty[i]]=0;
}
if(x+1>n)
if(y+1<=m)
{
for(int i=1;i<=8;i++)
if(x+tx[i]<=n&&y+1+ty[i]<=n&&x+tx[i]>0&&y+1+ty[i]>0){
a[x+tx[i]][y+1+ty[i]]=1;
dfs(0,y+2,u+1);
for(int i=1;i<=8;i++)
if(x+tx[i]<=n&&y+1+ty[i]<=n&&x+tx[i]>0&&y+1+ty[i]>0){
a[x+tx[i]][y+1+ty[i]]=0;
}
}
}
}}
}
int main(){
freopen("secretnum.in","r",stdin);
freopen("secretnum.out","w",stdout);
cin>>n>>m;
dfs(0,0,1);
for(int i=1;i<=20;i++)
{
if(ans[i]!=0)
{
cout<<i<<' '<<ans[i]<<endl;
}
}
return 0;
}