acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 题解(dfs的)

    #include<bits/stdc++.h> #include<iostream> #include<cmath> #include<cstring> #include<map> #include<algorithm> #include<vector> #include<stack> #include<queue> #include<set> //#include<> using namespace std; int dx[5]={0,1,0,-1,0}; int dy[5]={-1,0,1,0,0}; int a[50][50]; int n,m,kill; bool ok(int o,int p){ return o>=0&&o<n&&p>=0&&p<m; } void dfs(int x){ vector<pair<int,int> > task; int x1=-1,y1=-1; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(!a[i][j]){ x1=i; y1=j; break; } } if(x1!=-1){ break; } } if(x1==-1){ kill=x; return; } if(x+1>=kill){ return; } for(int i=0;i<5;i++){ int x2=x1+dx[i]; int y2=y1+dy[i]; if(ok(x2,y2)){ task.clear(); for(int j=0;j<5;j++){ int x3=x2+dx[j]; int y3=y2+dy[j]; if(ok(x3,y3)&&!a[x3][y3]){ task.push_back(make_pair(x3,y3)); a[x3][y3]=1; } } dfs(x+1); for(int j=0;j<task.size();j++){ a[task[j].first][task[j].second]=0; } } } } int main(){ cin>>n>>m; kill=n*m; int YNWA=kill; dfs(0); cout<<YNWA-kill; }

    userId_undefined

    LR.

    荣耀黄金
    5阅读
    1回复
    0点赞
首页