招商银行信用卡2019届实习笔试题


题目表述:如图

思路:有向图中找回环。(具体方法和原理可以参考相关博客)同时标记那些指向回环的顶点。全部的顶点去掉被标记的顶点,输出就是答案了。完全按照题目中的提示想的。具体方法就是构建有向图,dfs找环,保存环内顶点。

代码:

#include<iostream>
#include<malloc.h>
#include <vector>
#include <stack>
using namespace std;
#define maxNum 10005
stack<int> s;
vector<int>ans(maxNum);
bool is_DAG=true;
int color[maxNum]; typedef struct
{  char v[maxNum]; int e[maxNum][maxNum];int vNum; int eNum;
}graph;  void createGraph(graph *g);
void DFS(graph *g);
void dfs(graph *g,int i);void dfs(graph *g,int i)
{   //cout<<"顶点"<<i<<"已经被访问"<<endl;  s.push(i);color[i]=-1;  for(int j=1;j<=g->vNum;j++)  {  if(g->e[i][j]!=0)  {     if(color[j]==-1)//探索到回边,存在环  {  is_DAG=false;//不是有向无环图  while (!s.empty()){int flag = s.top();s.pop();ans[flag] = 1;}}  else if(color[j]==0) { dfs(g,j);}}  }  color[i]=1;//表示i的后裔节点都被访问过
}  void DFS(graph *g)
{  int i;  //初始化color数组,表示一开始所有顶点都未被访问过,//初始化pre和post  for(i=1;i<=g->vNum;i++)  {  color[i]=0;   }  //深度优先搜索  for(i=1;i<=g->vNum;i++)  {  if(color[i]==0)//如果这个顶点为被访问过,则从i顶点出发进行深度优先遍历  {  dfs(g,i);  }  }
}  void createGraph(graph *g)//创建图g
{   cin>>g->vNum;   cin>>g->eNum; int i,j;//初始画图g  for(i=1;i<=g->vNum;i++)  for(j=1;j<=g->vNum;j++)  g->e[i][j]=0;  //输入边的情况  for(int k=1;k<=g->eNum;k++)  {  scanf("%d,%d", &i,&j); g->e[i][j]=1;  }
}
int main()
{  graph *g;  g=(graph*)malloc(sizeof(graph));  createGraph(g);//创建图g  DFS(g);//深度优先遍历  //判断是否是有向无环图   for (int i=0;i<=g->vNum;i++){if (ans[i] == 1){for (int j=0;j<=g->vNum;j++){if (g->e[j][i]!=0){ans[j] = 1;}}}}vector<int>final_ans;for (int i=1;i<=g->vNum;i++)if (ans[i] != 1){final_ans.push_back(i);}if (final_ans.size() == 0){printf("None\n");return 0;  }for (int i=0;i<final_ans.size()-1;i++)printf("%d ", final_ans[i]);printf("%d", final_ans[final_ans.size()-1]);return 0;
} 

代码中图的结构是之前有参考其他博客中的,具体忘记了。

招商银行信用卡2019届实习笔试题相关推荐

  1. 2019届华为笔试题(软件卷)

    华为笔试题共3道编程题.第一题100分,第二题200分,第三题300分,一共600分. 第一题: 输入描述: 1.忽略小数点,例如"A1.2",认为包含整数1和2: 2.如果整数的 ...

  2. 微软2019暑期实习笔试题

    微软2019招暑期实习生的编程题 问题一:  [玻璃球游戏] 一个队伍中N个人从1到N编号,N个人之间的连线方式如下:编号为K的人和编号为J的人相连(J exactly divides K),玻璃球可 ...

  3. 华为2019暑期实习笔试题

    目录 第一题 题意 思路 代码 第二题 题意 思路 代码 第三题 题意 思路 代码 笔试共有3道编程题,分别为100分.200分.300分,两个小时.以下内容的编写全凭记忆和个人理解,如有什么不对的地 ...

  4. 字节跳动2019届校招笔试题

    1.世界杯开幕式会在球场C举行,球场C的球迷看台可以容纳M*N个球迷.在球场售票完成后,现官方想统计此次开幕式一共有多少个球队球迷群体,最大的球队球迷群体有多少人. 经调研发现,球迷群体在选座时有以下 ...

  5. 2021.4.11 字节跳动实习笔试题---情报解密

    2021.4.11 字节跳动实习笔试题-情报解密 题目内容 题目内容: 给你一个字符串,该字符串中有数字,字母(字母只有大写字母)以及一些其他的字符(例如:%,.等),如果首字母为字母或者数字的话,就 ...

  6. 2014.3.29阿里巴巴暑期实习笔试题分析

    參考:http://blog.csdn.net/iloveyoujelly/article/details/22941531 以下中的[分析]是我给出的. 2014.3.29阿里巴巴暑期实习笔试题分析 ...

  7. C语言单链表实现FCFS算法,2014腾讯实习笔试题

    2014腾讯实习笔试题 1. 关于二叉树,下面说法正确的是() A. 对于N个节点的二叉树,其高度为nlog2n; B. 一个具有1025个节点的二叉树,其高度范围在11~1025之间 C. 二叉树的 ...

  8. 头条2020届实习生笔试题

    头条2020届实习生笔试题 一卷 编程题: 输入某年某月某日,判断这一天是这一年的第几天? // 判断是否为闰年function isRun(a) {return a % 4 == 0 &&a ...

  9. 记 随手科技2020届实习生笔试题(Java开发工程师)笔试题

    2020届实习生笔试题(Java开发工程师) 一.选择题(共6题,每小题5分,满分30分) 1 2 3 4 5 6 总分 B B A C B C 1.下列排序算法中,初始数据集合对排序性能无影响的是( ...

最新文章

  1. 推荐!神经进化才是深度学习未来的发展之路!
  2. 【翻译】了解Ext JS 5的小部件
  3. 这个奇葩打字外设火了,一分钟500词比说话还快,直接被打字比赛禁用
  4. ubantu mysql允许外部链接_ubuntu 下mysql 设置允许远程连接
  5. JavaScript实现levenshteinDistance字符串编辑距离算法(附完整源码)
  6. go语言学习笔记(2)命令源码文件
  7. java面试题八 传值传引用
  8. C/C++经典面试题
  9. mtk android 5.1 logo,Android ROM DIY之MTK平台手机通用移植
  10. 云栖社区,诚邀技术同仁一同入驻
  11. HDU 5979 2016ICPC大连 I: Convex
  12. 图片转化为base64编码python版本
  13. Android TextView drawableLeft 在代码中实现
  14. php集成环境xampp完整安装过程
  15. matlab 求虚数的反正切,matlab中的反正切函数
  16. 基于SSM的高校学生宿舍报修管理系统
  17. 使用JS与jQuery实现文字逐渐出现特效
  18. 关于Git及GitLab的简单易懂的使用方法(将本地仓库的项目提交到master分支或者自定义的分支上)
  19. Python中的enumerate用法
  20. Rust 图像处理库 image-rs

热门文章

  1. c语音删除字符数组中的元素
  2. ImGui添加背景图片的两种方式
  3. git_error:src refspec dev does not match any
  4. 【Get深一度】Microsoft Office 2013 Word中图片插入后变模糊解决办法
  5. 宽带和流量是分开的吗_宽带、带宽和流量的区别
  6. 微信小程序登陆验证机制理解及实现
  7. 利用pdf2image,将pdf文件转换成图片
  8. 删除我的电脑中微云、百度网盘、酷我音乐等软件图标
  9. 基本函数依赖和候选键_[总结]关系数据库设计基础(函数依赖、无损连接性、保持函数依赖、范式、……)...
  10. 网页调用 iOS/Android 客户端