题目大意:B[i, j]表示周围有多少个比它大的数,能否用B数组构造出一个A数组,如果不能输出“NO SOLUTION”。

分析:数据规模比较小,可以直接暴力枚举每个点的值。

代码如下:

  1. #include<stdio.h>
  2. #include<algorithm>
  3. #include<string.h>
  4. #include<math.h>
  5. using namespace std;
  6.  
  7. const int MAXN = ;
  8.  
  9. int dir[][][] = {{},{},{{},{,},{,},{,},{,}},
  10. {{},{,},{,,},{,},{,,},{,,,},{,,},{,},{,,},{,}}};
  11. int near[][][] = {{},{},{{},{},{},{},{,}},{{},{},{},{},{},{,},{,},{},{,},{,}}};
  12. int B[MAXN], A[MAXN], ok, N;
  13.  
  14. bool nBigger(int k)
  15. {
  16. int i, cnt = , zero=;
  17.  
  18. for(i=; dir[N][k][i]; i++)
  19. {
  20. if(A[k] < A[dir[N][k][i]])
  21. cnt++;
  22. if(!A[dir[N][k][i]])
  23. zero++;
  24. }
  25.  
  26. if(cnt > B[k])
  27. return false;
  28. if(cnt+zero < B[k])
  29. return false;
  30. return true;
  31. }
  32. void DFS(int k)
  33. {
  34. int i, j;
  35.  
  36. if(k == N*N+)
  37. ok = ;
  38.  
  39. if(ok)return ;
  40.  
  41. for(i=; i<MAXN; i++)
  42. {
  43. A[k] = i;
  44. if(nBigger(k) == false)
  45. continue;
  46. for(j=; near[N][k][j]; j++)
  47. {
  48. if(!nBigger(near[N][k][j]))
  49. break;
  50. }
  51.  
  52. if(near[N][k][j] == )
  53. DFS(k+);
  54.  
  55. if(ok)return ;
  56. }
  57.  
  58. A[k] = ;
  59. }
  60.  
  61. int main()
  62. {
  63. scanf("%d", &N);
  64.  
  65. for(int i=; i<=N; i++)
  66. for(int j=; j<=N; j++)
  67. scanf("%d", &B[(i-)*N+j]);
  68.  
  69. DFS();
  70.  
  71. if(!ok)
  72. printf("NO SOLUTION\n");
  73. else
  74. {
  75. for(int i=; i<=N; i++)
  76. for(int j=; j<=N; j++)
  77. printf("%d%c", A[(i-)*N+j], j==N?'\n':' ');
  78. }
  79.  
  80. return ;
  81. }

Shtirlits - SGU 125(搜索)的更多相关文章

  1. SGU 125 Shtirlits 搜索+可行性剪枝

    500ms时限406ms水过…… 直接枚举肯定超时,需要剪枝. 枚举每个格子的元素,检查其左上角和正上方格子是否满足条件,若不满足不必再向下搜索. 在 这里 看到一个更好的方法: 枚举每个格子是哪个相 ...

  2. sgu 125 Shtirlits dfs 难度:0

    125. Shtirlits time limit per test: 0.25 sec. memory limit per test: 4096 KB There is a checkered fi ...

  3. SGU 125.Shtirlits

    时间限制:0.25s 空间限制:4M 题意: 有N*N的矩阵(n<=3),对所有i,j<=n有G[i][j]<=9,定义f[i][j]为G[i][j]四周大于它的数的个数(F[i][ ...

  4. ACM 暴力搜索题 题目整理

    UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...

  5. 今日SGU 5.18

    SGU 125 题意:给你一个数组b[i][j],表示i,j的四周有多少个数字大于它的,问你能不能构造出一个a矩形 收获:dfs  + 剪枝 一行一行的dfs,然后第一行去枚举0-9,下一行判断当前选 ...

  6. ElasticSearch5在Ubuntu系统下的安装和Java调用

    ElasticSearch是开源搜索平台的新成员,实时数据分析的神器.可以理解为作为搜索的数据库,可以提供搜索功能.对比关系型数据库,具有以下的相似关系: 关系型数据库 数据库 表 行 列 Elast ...

  7. Intellij Idea 教程

    Intellij Idea 教程 [涵盖安装.配置.常见问题&技巧.Maven.Git.Tomcat.快捷键.项目配置等] 目录 入门............................. ...

  8. Centroid - SGU 134(树的搜索)

    题目大意:给你一个树,树每个点都有一个值, 这个点的的值就等于所有儿子里面点最多的那个儿子,值最小的就叫做重心,求出重心,还有所有等于重心的点,按照升序输出. 分析:就是一个简单的搜索树,求出来最大的 ...

  9. SGU 520 Fire in the Country(博弈+搜索)

    Description This summer's heat wave and drought unleashed devastating wildfires all across the Earth ...

随机推荐

  1. Undefined symbols for architecture armv7: "_OBJC_METACLASS_$_ _OBJC_CLASS_$_ ld: symbol(s) not found for architecture armv7错误

    Undefined symbols for architecture armv7:  "_OBJC_METACLASS_$_MWPhotoBrowser", referenced ...

  2. Quartz-2D绘图之概览

    最近公司新项目需求要把数据图形化,趁着这个机会,重温了下Quarts-2D这个强大的跨平台2D绘图引擎. 一.Quartz概述 1.Quartz 2D是一个二维的绘图引擎,支持iOS和Mac OS平台 ...

  3. Spring Security Encryption三种加密方式

    Encryption One-way encryption       单项加密,客户端将要传递的值先加密(使用特定的加密方法),将原值和加密好的值传递过去,服务器端将原始数据也进行一次加密(两者加密 ...

  4. C++的显示转换

    利用显示转换使得我们可以很容易发现它们,因为通过名字就能找到:  static_cast 用于“良性”和“适度良性”转换,包括不用强制转换  const_cast  对“const”和“volatil ...

  5. ACM YTU 挑战编程 字符串 Problem A: WERTYU

    Problem A: WERTYU Description A common typing error is to place yourhands on the keyboard one row to ...

  6. PHP过滤常用标签的正则表达式

    $str=preg_replace("/\s+/", " ", $str); //过滤多余回车 $str=preg_replace("/<[ ] ...

  7. 开启 htaccess 配置

    是在wamp中,apache2.2 开启 伪静态时,httpd.conf 配置如下: 查找 <Directory />Options FollowSymLinksAllowOverride ...

  8. 通过javascript实现页面的横竖屏固定

    javascript是不能固定页面是横屏还是竖屏的,但是我们可以通过另外一种思路来监听window.orientation状态,假设我们要固定页面为横屏显示,则当window.orientation返 ...

  9. apache2.4下载与安装

    step1 下载apache 百度“apache下载”,找到官网链接,如下 2. 点进去后选择 Files for microsoft windows,如下 3. 前三个任选一个,这里我们选第一个,如 ...

  10. angular 控制器之间值得传递

    <div ng-controller="ParentCtrl"> <!--父级--> <div ng-controller="SelfCtr ...