第七届蓝桥杯 方格填数
来源:互联网 发布:批量注册淘宝号 编辑:程序博客网 时间:2024/05/21 15:49
本来一道练手的题,却被坑死了 - -
有谁答案是65的举个手!(正确答案是1580 , 0-9不重复)
原因在于---> 你的数组区分未填入的数是什么,我用的是二维数组
初始化是这样的:
int g[5][6]={{-1,-1,-1,-1,-1,-1},{-1,0,0,0,-1,-1}, {-1,0,0,0,0,-1},{-1,-1,0,0,0,-1}
,{-1,-1,-1,-1,-1,-1}}
但是,你填数的时候在判断过程中是临近数不能相邻,那么一旦1与未填的内容0相比,就不能填这个1了!因此,会有少算很多情况!
改成:
int g[5][6]={{-2,-2,-2,-2,-2,-2},{-2,-1,-1,-1,-2,-2}, {-2,-1,-1,-1,-1,-2}, {-2,-2,-1,-1,-1,-2}
,{-2,-2,-2,-2,-2,-2} };
避免造成临近数的误会。(-2用于区分边界,-1用于区分未填的)
DFS
#include<stdio.h>int g[5][6]={{-2,-2,-2,-2,-2,-2},{-2,-1,-1,-1,-2,-2}, {-2,-1,-1,-1,-1,-2}, {-2,-2,-1,-1,-1,-2},{-2,-2,-2,-2,-2,-2} };int count = 0;int dx[]={0,0,1,-1,1,-1,1,-1};int dy[]={1,-1,0,0,1,-1,-1,1};int vis[11]={0,0,0,0,0,0,0,0,0,0,0} ;int check(int n,int x,int y){ for(int i = 0;i<8;i++){if(n == g[x+dx[i]][y+dy[i]]+1 || n == g[x+dx[i]][y+dy[i]]-1)return 0;}return 1; }int dfs(int n, int c){int i,j, k;if(c == n-1){ count++; printf("%d\n",count);} else{for(i = 1;i<4;i++){ for(j = 1;j<5;j++){ if(g[i][j]== -2 || g[i][j] != -1)continue; // || newx< 1 || newy< 1 || newx > 4 || newy >4 for(k = 1;k<n;k++){ if(vis[k] == 0 && check(k,i,j) ) {vis[k] =1;g[i][j] = k;dfs(n,c+1);g[i][j] = -1; vis[k] =0; }}return 0;}}}return 0;//printf("*");}int main(){ count = 0; dfs(11,0); printf("%d",count); return 0;}
哎 ,看了别人的才发现一个问题,这种题应该用更快的方法才行,C++ 中<algorithm>里提供了一个函数为
next_permutation(begin ,end); 直接提供排序,直接改变数祖的内容;
具体算法请看 方格填数 next_permutation
0 0
- 第七届蓝桥杯 方格填数
- 2016第七届蓝桥杯-方格填数
- 第七届蓝桥杯—第六题||方格填数
- 第七届蓝桥杯【省赛试题6】方格填数
- 第七届蓝桥杯 省赛 JavaB组 方格填数
- 2016年第七届蓝桥杯Java 方格填数
- 第七届蓝桥杯_方格填数_简单搜索
- 蓝桥杯 第七届省赛试题 方格填数
- 第七届蓝桥杯第6题:方格填数
- 蓝桥杯第七届方格填数
- 2016年第七届蓝桥杯C/C++程序设计本科B组省赛 方格填数(结果填空)
- 第七届蓝桥杯软件类省赛真题-C-B-6_方格填数
- 2016年第七届蓝桥杯C/C++程序设计本科B组省赛-方格填数(结果填空)
- 第七届蓝桥杯【省赛试题6】方格填数C语言代码
- 第七届蓝桥杯大赛个人赛省赛(软件类)A组第三题 方格填数
- 2016年第七届蓝桥杯C/C++A组第三题---方格填数
- 蓝桥杯-第七届省赛javaB组-方格填数
- 第七届C/C++B-方格填数 DFS
- Palindromic Number
- Android开发从入门到放弃(1)在Activity之间传递数据
- 一起talk C栗子吧(第一百九十五回:C语言实例--DIY less命令四 )
- 如何启动另一个Activity
- 从零开始学习Android开发-创建第一个App
- 第七届蓝桥杯 方格填数
- OnDraw()和OnPaint()有什么区别?
- 03-JS特效-三大系列之scroll系列
- 海航生态科技舆情大数据平台容器化改造
- Android音频的播放
- Node.js后台数据处理相关方法
- 虚拟机无法联网(Ubuntu 14.04)
- SAP BI
- 小骆驼