华为2016研发工程师编程题
来源:互联网 发布:女神联盟2进阶13数据 编辑:程序博客网 时间:2024/06/10 21:06
练习:http://www.nowcoder.com/test/710802/summary
[编程题]删数
有一个数组a[N]顺序存放0-N,要求没隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。
输入描述:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如100,则对a[999]进行计算。
输出描述:
一行输出最后一个被删掉的数的原始下标位置。
输入例子:
8
输出例子:
6
#include<cstdio>#include<queue>using namespace std; int main(){ int n; while(scanf("%d",&n)!=EOF) { queue<int>Q; for(int i=0;i<n;i++) { Q.push(i); } int cnt=0,tmp; while(!Q.empty()) { ++cnt; tmp=Q.front(); Q.pop(); if(cnt==3){cnt=0;} else { if(Q.empty()) break; Q.push(tmp); } } printf("%d\n",tmp); } return 0;}
[编程题]字符集合
输入一个字符串,求出该字符串包含的字符集合
输入描述:
每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
输出描述:
每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。
输入例子:
abcqweracb
输出例子:
abcqwer
#include<stdio.h>#include<string.h>using namespace std; int main(){ char ch[105]; char num[55]; while(scanf("%s",ch)!=EOF) { bool vis[260]={false}; int cnt=0; for(int i=0;ch[i];i++) { if(!vis[ch[i]]) { vis[ch[i]]=true; num[cnt++]=ch[i]; } } num[cnt]='\0'; for(int i=0;i<cnt;i++) printf("%c",num[i]); printf("\n"); } return 0;}
[编程题]数独
数独是一个我们都非常熟悉的经典游戏,运用计算机我们可以很快地解开数独难题,现在有一些简单的数独题目,请编写一个程序求解。
输入描述:
输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。
输出描述:
输出九行,每行九个空格隔开的数字,为解出的答案。
先说下数独的游戏规则:
在一个9x9的方格中,你需要把数字1-9填写到空格当中,并且使方格的每一行和每一列中都包含1-9这九个数字。同时还要保证,空格中用粗线划分成9个3x3的方格也同时包含1-9这九个数字。比如有这样一个题,大家可以仔细观察一下,在这里面每行、每列,以及每个3x3的方格都包含1-9这九个数字。
不过现在牛客的数据没过,管理员还在调试。。。大家可以讨论下。
链接:http://www.nowcoder.com/profile/825348/codeBookDetail?submissionId=1097998
#include<stdio.h>struct point{ int x, y;} p[81];int num, flag, map[10][10];int judge(int n, int k){ int i, j, x, y; for(i = 0; i < 9; i++) { if(i != p[n].y && map[p[n].x][i] == k) return 0; if(i != p[n].x && map[i][p[n].y] == k) return 0; } x = p[n].x / 3 * 3; y = p[n].y / 3 * 3; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) if(map[x+i][y+j] == k && (i != p[n].x || j != p[n].y)) return 0; return 1;}void dfs(int n){ int i; if(n == num) { flag = 1; return; } for(i = 1; i < 10; i++) { if(judge(n, i)) { map[p[n].x][p[n].y] = i; dfs(n + 1); if(flag) return; map[p[n].x][p[n].y] = 0; } } return;}int main(){ int i, j, t = 0; char s[2]; while(scanf("%s", s) != -1) { num = flag = 0; if(s[0] == '0') p[num].x = 0, p[num++].y = 0, map[0][0] = 0; else map[0][0] = s[0] - '0'; for(i = 0; i < 9; i++) for(j = 0; j < 9; j++) if(i || j) { scanf("%s", s); if(s[0] == '0') p[num].x = i, p[num++].y = j, map[i][j] = 0; else map[i][j] = s[0] - '0'; } dfs(0); if(t++) printf("\n"); for(i = 0; i < 9; i++) { for(j = 0; j < 8; j++) printf("%d ", map[i][j]); printf("%d\n", map[i][8]); } } return 0;}
0 0
- 华为2016研发工程师编程题
- 华为2016研发工程师编程题
- 华为2016研发工程师编程题
- 华为2016研发工程师编程题(1)----删数
- 华为2016研发工程师编程题(2)----字符集和
- 字符集合---- 华为2016研发工程师编程题
- 删数--约瑟夫环-- 华为2016研发工程师编程题
- 字符集合-- 华为2016研发工程师编程题
- 华为2016研发工程师编程题---删数
- 华为2016研发工程师编程题之删数据
- 华为2016研发工程师编程题之字符集合
- 华为2016研发工程师编程题1删数
- 华为2016研发工程师编程题2字符集合
- 华为2016研发工程师编程题3数独
- 华为研发工程师编程题----汽水瓶
- 华为研发工程师编程题3
- 华为研发工程师编程题(1)----汽水瓶
- 华为研发工程师编程题(2)----明明的随机数
- CS224D Deep Learning for NLP lecture2
- 正则表达式学习(基础篇)(原创)
- Android五大布局
- 51nod 01背包(DP)
- junit 的classpath文件
- 华为2016研发工程师编程题
- android集成微信支付(全是坑)
- 数组对称判断方法
- hdu5475 An easy problem
- NIOS II IDE编译出错:no file name for '-include'。Quartus ii中的.tcl文件run不起来
- 运动控制第一章
- bzoj2005
- Android必备的Java知识点
- Machine Learning Week 1