题目链接:https://www.nowcoder.com/test/23090658/summary

1、围棋遍历

函数calc计算围棋中位置(x,y)处连成一片的棋子个数。所谓连成一片,即沿着棋盘横竖线往任意方向遍历,遍历过程允许转弯,不允许走斜线,中间未出现对方棋子或空子。

enum color {

NONE, WHITE, BLACK,         // 棋子颜色,NONE表示未落子

};

struct weiqi {

enum color board[19][19];   // 棋盘上每个位置的落子

};

int calc(struct weiqi *wq, int x, int y){}

输入描述:

第1-19行数据是棋盘上棋子的颜色数据。0表示未落子,1表示白子,2表示黑子。 第1行最左边位置的坐标是(0,0),第1行第2列的坐标是(1,0),第2行第1列的坐标是(0,1),依此类推。 第20行数据是起始坐标(x,y)

输出描述:

与坐标(X,Y)连成一片的棋子数目

输入例子1:

0000000000000000000
0000011000000000000
0000001111000000000
0000001021000000000
0000001010100000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
0000000000000000000
5,1

输出例子1:

9
#include <stdio.h>
#include <string.h>enum color {NONE, WHITE, BLACK,         //棋子颜色,NONE表示未落子
};
struct weiqi {enum color board[19][19];   //棋盘上每个位置的落子
};int calc(struct weiqi* wq, int x, int y)
{static int dir[][2] = { {1,0},{0,1},{0,-1},{-1,0} };static color current = wq->board[y][x];if (x >= 19|| x < 0|| y >= 19|| y < 0|| wq->board[y][x] != current|| wq->board[y][x] == NONE)return 0;int counter = 1;wq->board[y][x] = NONE;for (int i = 0; i< 4; i++)counter+=calc(wq, x + dir[i][0], y + dir[i][1]);return counter;
}int input(struct weiqi* wq, int* x, int* y)
{int row, col;int ret;char buf[80];for (row = 0; row < 19; ++row) {if (fgets(buf, sizeof(buf), stdin) == NULL)return -1;if (strlen(buf) < 19)return -1;for (col = 0; col < 19; ++col) {switch (buf[col]) {case '0':wq->board[row][col] = NONE;break;case '1':wq->board[row][col] = WHITE;break;case '2':wq->board[row][col] = BLACK;break;default:return -1;}}}ret = scanf( "%d,%d", x, y);if (ret != 2)return -1;for (row = 0; row < 19; ++row) {for (col = 0; col < 19; ++col) {fprintf(stderr, "%d ", wq->board[row][col]);}fprintf(stderr, "\n");}fprintf(stderr, "x = %d, y = %d\n", *x, *y);return 0;
}int main()
{struct weiqi wq;int x = 0, y = 0;int cnt;memset(&wq, 0, sizeof(wq));if (input(&wq, &x, &y) < 0) {fprintf(stderr, "error!\n");return 1;}cnt = calc(&wq, x, y);printf("%d\n", cnt);return 0;
}

2、单链表排序

请实现list_sort,使用冒泡法将head指向的链表按val值大小排成升序

struct node {

int val;

struct node *next;

};

void list_sort(struct node *head)

{

}

static void list_sort(struct node* head)
{for (node* i = head; i; i=i->next) {for (node* j = i->next; j; j = j->next) {if (i->val > j->val)std::swap(i->val, j->val);}}
}

3、出栈顺序

已知某一个字母序列,把序列中的字母按出现顺序压入一个栈,在入栈的任意过程中,允许栈中的字母出栈,求所有可能的出栈顺序

输入描述:

字符串,如:abc

输出描述:

可能的出栈顺序,每行一种顺序

输入例子1:

abc

输出例子1:

abc
acb
bac
bca
cba
#include <iostream>
#include <string>
#include <vector>
#include <set>
using namespace std;
int main() {string str;cin >> str;vector<pair<string, string>> result;    //(栈中字符,出栈字符)result.push_back({ string(),string() });for (const char& ch : str) {int m_size = result.size();for (int i = 0; i < m_size; i++) {result[i].first.push_back(ch); pair<string, string> temp = result[i];for (int j = 0; j < result[i].first.size(); j++) {temp.second.push_back(temp.first.back());temp.first.pop_back();result.push_back(temp);}}}set<string> output;for (auto& stk : result)output.insert(stk.second + string(stk.first.rbegin(), stk.first.rend()));for (const string& str : output)cout << str << endl;return 0;
}

深信服校园招聘c/c++软件开发A卷相关推荐

  1. [牛客练习] 深信服校园招聘c/c 软件开发H卷 Apare_xzc

    [牛客练习] 深信服校园招聘c/c 软件开发H卷 Apare 2020.9.17 牛客链接 56种 dp或者dfs #include <bits/stdc++.h> using names ...

  2. 深信服校园招聘c/c++ 软件开发A卷--菜鸡落泪

    #深信服校园招聘c/c++ 软件开发A卷 软件开发A卷目录 #深信服校园招聘c/c++ 软件开发A卷 第一题-围棋遍历(水题,递归搜索,有小坑) 第二题-单链表排序(常规题,考察链表的基本操作) 第三 ...

  3. 深信服校园招聘c/c++软件开发B卷

    链接:https://www.nowcoder.com/test/23090664/summary 1.位对齐 编写函数align_n,将size的低n位(即:0到n-1位)清零,如果清零前size的 ...

  4. 2011深信服校园招聘笔试面试

    http://blog.sina.com.cn/s/blog_48c9576b0100me1y.html 9月26号深信服校园招聘笔试 都说深信服的题又偏又难,果然不假.不过还有有很多值得多思考的题. ...

  5. 深信服校园招聘安全攻防A卷

    深信服校园招聘安全攻防A卷 1.谈谈在WEB类安全问题的应急处置过程中web日志溯源攻击路径的思路? 在对WEB日志进行安全分析时,可以按照下面两种思路展开,逐步深入,还原整个攻击过程. 首先确定受到 ...

  6. 深信服校园招聘安全攻防F卷

    1.请尽可能列举你知道的网站未能正确使用图片验证码机制的情况,以及如何绕过其限制? - 图形验证码的内容可OCR识别 - 多阶段的过程,先校验验证码,成功之后的下一步不需要验证码,可以直接抓包,跳过第 ...

  7. 浙江大华2013校园招聘笔试题软件算法类D卷

  8. 2019.5 美团实习生招聘(java软件开发)面经

    2019.5 美团实习生招聘(java软件开发)面经 垃圾回收(判断垃圾是否该回收.回收算法.回收器) 类加载,怎么保证类加载只进行一次(类加载步骤.双亲委派机制) hashmap自动扩容如何实现 多 ...

  9. 招聘:JAVA软件开发工程师

    招聘:java软件开发工程师 本公司所有新创办的创业型小公司. 研发团队6-7个人. 工作地点:厦门软件园二期观日路 现需招聘java软件开发工程师2-3名 要求: 1.有良好的沟通能力.团队合作精神 ...

最新文章

  1. 独家 | 聊天机器人开发中的机器学习(附链接)
  2. OpenAI首次推出数学定理推理模型GPT-f,23个推导结果被专业数据库收录
  3. python 可变 与 不可变类型
  4. 【项目管理】敏捷小品:Rupert 工业公司 项目:~Alpha~
  5. 天水市一中2021高考成绩查询,天水高中成绩排名2021,天水中考分数线排行榜
  6. 简易的素描图片转换流程与实现
  7. WebService学习总结——调用第三方提供的webService服务
  8. 慢动作重播~ 英伟达AI能把普通视频,变成高质量慢动作视频
  9. sql优化工具explain的使用
  10. 改进的OTSU算法处理光照不均匀图像
  11. GPS定位准确度CEP、RMS
  12. 后台打log(便于查看问题和调试)方法
  13. mysql语句批量更新数据库_sql 更新批量数据库语句
  14. 玩客云刷入openwrt系统
  15. 剖析非同质化代币ERC721-全面解析ERC721标准
  16. Google I/O 2012 主题演讲直播(第一天)Android 4.1 Jelly Bean们来了
  17. 走出舒适圈,你才能看到更广袤的世界
  18. 交叉配血类有哪些最新发表的毕业论文呢?
  19. iphone制作电子杂志
  20. 无源光网络的原理和构成

热门文章

  1. html5怎么实现雨滴效果,HTML5实现晶莹剔透的雨滴特效
  2. WPS(word)中插入表格时怎么单独调整一个单元格子的大小
  3. 功能强大的免费国产开源合同管理系统-华炎合同管理系统
  4. uestc 1903
  5. 因子完备数c语言,编写函数输出完备数及其所有约数
  6. 【自制】我造了一台 钢 铁 侠 的 机 械 臂 !【硬核】
  7. 奖项公布|Sui Demo Day香港站获胜者名单新鲜出炉
  8. CocosCreator黄金矿工资源工程文件
  9. 安装VMware15虚拟机+Ubuntu19.10
  10. 微信小程序接入第三方接口