ural 1656. Far Away Kingdom's Army(bfs)
来源:互联网 发布:淘宝旺铺收费 编辑:程序博客网 时间:2024/05/23 11:48
题意:有一个方阵有n行n列(3<=n<=9),共有n*n个人。现在已知他们的身高为170~200厘米之间。
求一种可行的方案将他们排在方阵中,使得同一行、同一列中,高度总是从中间向两边递减
解法:对输入的数据从大往小遍历,对矩阵从中央开始进行bfs即可。貌似是桶排序。
#include <iostream>#include <queue>using namespace std;const int mov[4][2]={0,1,0,-1,1,0,-1,0};int n,tot,arr[201]={0},ans[10][10]={0};struct node{ int x,y; node(){x=y=0;}}u,v;int get(){ while((!arr[tot])&&tot) --tot; --arr[tot]; return tot;}int main(){ queue<node> q; cin>>n; for (int i=n*n;i;--i) { cin >> tot; ++arr[tot]; } tot=200; node tmp; tmp.x=(n+1)/2; tmp.y=(n+1)/2; ans[(n+1)/2][(n+1)/2]=get(); q.push(tmp); while(!q.empty()) { u=q.front(); q.pop(); for(int i=0;i<4;i++) { v.x=u.x+mov[i][0]; v.y=u.y+mov[i][1]; if ((v.x < 1) || (v.y < 1) || (v.x > n) || (v.y > n)) continue; if (ans[v.y][v.x]) continue; ans[v.y][v.x]=get(); q.push(v); } } for (int i=1;i<=n;++i) { for (int j=1;j<=n;++j) cout << ans[i][j] << ' '; cout << endl; } cin>>n; return 0;}
- ural 1656. Far Away Kingdom's Army(bfs)
- A. Help Far Away Kingdom
- A. Help Far Away Kingdom
- CodeForces 143B - Help Kingdom of Far Far Away 2(字符串模拟)
- codeforces 143B Help Kingdom of Far Far Away 2(模拟)
- CF:99A. Help Far Away Kingdom
- 沐枫NOI 7. Help Far Away Kingdom
- Codeforce 143B - Help Kingdom of Far Far Away 2
- codeforces 143B Help Kingdom of Far Far Away 2
- B. Help Kingdom of Far Far Away 2
- codeforces Help Kingdom of Far Far Away 2
- 【题意string】#78 A. Help Far Away Kingdom
- hdu2586(How far away ?)
- hdu2586(How far away ?)
- Far Far Away
- HDU 2586 - How far away ? (LCA)
- hdu 2586 How far away ?(LCA)
- HDU 2586 How far away ?(LCA)
- 解决ASP.NET在IE10中Session丢失问题
- Oracle默认的用户名和密码
- jdk ant tomcat 环境变量配置
- Windows下Postgre SQL数据库通过Slony-I 实现数据库双机同步备份
- 关于UITableView的优化
- ural 1656. Far Away Kingdom's Army(bfs)
- 表空间
- 一五年未注册it黑公司长期拖欠工资还扬言相关部门不作为你能把我怎么着
- bash 中定义变量的规则
- UTMI及USB 2.0 PHY高速传输特性分析
- 最美的相遇
- Hdu 4628 Pieces
- 嵌入式系统开发的三层境界
- 数字不能被精确表示成为一个double问题