0
已解决
包涵宇
中级天翼
中级天翼
60分:
#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
int t,n,m,mx,map[21][21],s;
int vis[21][21];
void dfs(int x,int y,int c){
if(y>t){
x++;
y=1;
}
if(x>t){
if(c==n)
s++;
return ;
}
if(!vis[x][y]){
vis[x][y]++,vis[x-1][y-1]++,vis[x-1][y]++,vis[x-1][y+1]++,vis[x][y-1]++,vis[x][y+1]++,vis[x+1][y-1]++,vis[x+1][y]++,vis[x+1][y+1]++;
dfs(x,y+1,c+1);
vis[x][y]--,vis[x-1][y-1]--,vis[x-1][y]--,vis[x-1][y+1]--,vis[x][y-1]--,vis[x][y+1]--,vis[x+1][y-1]--,vis[x+1][y]--,vis[x+1][y+1]--;
}
dfs(x,y+1,c);
}
int main(){
cin>>t>>n;
dfs(1,1,0);
cout<<s;
return 0;
}
如何剪枝?