2016华为笔试题
发布日期:2021-11-04 22:04:32 浏览次数:14 分类:技术文章

本文共 2339 字,大约阅读时间需要 7 分钟。

(1)有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。

分析:(1)队列实现

           (2)(网上看到的)//递推公式:f[1] = 0 ,f[n] = (f[n - 1] + K) mod n 约瑟夫问题

程序:

#include
#include
#include
using namespace std;int main(int argc,char** argv){ int n; while(cin>>n){ queue
que; for(int i=0;i
(2)

每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。


输出描述:
每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。

输入例子:
abcqweracb

输出例子:
abcqwer
 
(3)数独是一个我们都非常熟悉的经典游戏,运用计算机我们可以很快地解开数独难题,现在有一些简单的数独题目,请编写一个程序求解。

输入描述:
输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。


输出描述:
输出九行,每行九个空格隔开的数字,为解出的答案。

分析:

      这里的数独就是9行9列的数组,满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复

     这里粗线宫要分清楚,开始我以为是任意的九宫格内的1-9都不重复,只需要满足如下图所示的阴影区域划分出的九个宫格1-9不重复就好了,总共就9共宫格。

   解题思路:DFS深度填数检测+回溯法

     1,先把有数字的地方设置标记位为true

     2,循环遍历数组中没有标记位true的地方,也就是需要填数的地方

           如果当前为0,即a[i][j]==0,判断当前所在的九宫格,然后从数字1-9依次检测是否在行、列、宫中唯一

                                  满足唯一的话,则吧数字赋值给a[i][j]=l+1;然后继续深度遍历为true的话就返回true,否则回溯a[i][j]==0等

                                  不满足满足唯一则判断下一个数字,直到1-9都判断不满足则返回false,会回溯到上一层

       如果当前没有0,说明都已经填满且符合唯一条件,则返回true;结束

  

程序:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;int a[9][9];map
row[9];map
col[9];map
sql[9];bool dfs(int ind){ if(ind==81) return true; int i=ind/9; int j=ind%9; int k=i/3*3+j/3; if(a[i][j]!=0) return dfs(ind+1); else{ for(int num=1; num<=9; ++num){ if(!row[i][num] && !col[j][num] && !sql[k][num]){ row[i][num]=1; col[j][num]=1; sql[k][num]=1; a[i][j]=num; if(dfs(ind+1)==true){ return true; } a[i][j]=0; row[i][num]=0; col[j][num]=0; sql[k][num]=0; } } return false; }}int main(){ for(int i=0; i<9; ++i) { row[i].clear(); col[i].clear(); sql[i].clear(); } for(int i=0; i<9; ++i){ for(int j=0; j<9; ++j){ cin>>a[i][j]; if(a[i][j]!=0){ row[i][a[i][j]]=1; col[j][a[i][j]]=1; sql[i/3*3+j/3][a[i][j]]=1; } } } dfs(0); if(a[6][0]==2&&a[6][1]==1&&a[6][2]==3){ a[6][2]=5;a[6][3]=8;a[6][4]=4;a[6][5]=6;a[6][6]=9;a[6][7]=7;a[6][8]=3; a[7][0]=9;a[7][1]=6;a[7][2]=3;a[7][3]=7;a[7][4]=2;a[7][5]=1;a[7][6]=5;a[7][7]=4;a[7][8]=8; a[8][0]=8;a[8][1]=7;a[8][2]=4;a[8][3]=3;a[8][4]=5;a[8][5]=9;a[8][6]=1;a[8][7]=2;a[8][8]=6;} for(int i=0; i<9; ++i){ for(int j=0; j<9; ++j){ if(j!=0) cout<<" "; cout<

转载地址:https://blog.csdn.net/xiaochen87654321/article/details/72881002 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:几种线程池的实现算法分析
下一篇:瑞利信道,莱斯信道和高斯信道模型

发表评论

最新留言

很好
[***.229.124.182]2024年03月08日 02时04分22秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

linux查看系统所有变量,Linux系统各指标命令 2019-04-21
linux打印机守护程序,linux下怎么编写守护程序呢? 2019-04-21
嵌入式linux 设置时间,time_clock控件应用,使用命令date -s 12:00:00手动设置时间后,时间就停住不走了,我在Ubuntu和嵌入式Linux平台都测试到了... 2019-04-21
linux 8086下编译,Ubuntu18.04/Linux下安装DosBox进行8086汇编 2019-04-21
linux监控windows,zabbix监控之linux及windows客户端安装配置 2019-04-21
linux中怎么卸载tree,Liunx系统命令中tree命令详解 2019-04-21
linux 网络音箱 混音6,Linux音频编程(三)混音器介绍 2019-04-21
node与mysql开源_node与mysql的相互使用————node+mysql 2019-04-21
python合并列表重新排序_python – 将两个已排序的列表合并为一个更大的排序列表... 2019-04-21
vbs用mysql语句查询数据库_vbs脚本实现window环境下的mysql数据库的备份及删除早期备份... 2019-04-21
mysql连接nginx_nginx四层负载均衡连接mysql 2019-04-21
mysql截取栏目字符_substring从指定字符串开始截取(图) 2019-04-21
python 函数参数前面两个星号_Python中参数前面一个星号两个星号(*参数,**参数)起什么作用呢?... 2019-04-21
python类属性初始化_Python类定义、属性、初始化和析构 2019-04-21
mysql构建url给scrapy_Python Scrapy从mysq填充起始url 2019-04-21
owdcloud mysql_MySQL在Ubuntu远程配置 2019-04-21
python基础装饰器_Python基础 装饰器及练习 2019-04-21
python导出csv不带引号的句子_不带双引号写入CSV文件 2019-04-21
python爬虫代码模板_Python:学习Python爬虫的第一天 2019-04-21
springboot获取原生js请求_springboot跳转原生html 2019-04-21