兔子突然想准备面试的第一天
来源:互联网 发布:数据圈论坛怎么打开 编辑:程序博客网 时间:2024/04/29 01:37
还有一年半开始找工作,在此选择将收集到的面试题整理来看看吧,总归对自己有用的样子。
学长今天面试的时候给我发过来的题目,所以嘞,先从这个开始吧!!!
阿里巴巴的ODPS大数据处理平台可以启动一系列并发的作业,每个作业中存在一系列存在父子关系的任务。每个任务用一个三元组表示–(任务id,父任务id,执行开销),其中任务id是一个正整数(>0);父任务id为0表示根任务,每个作业存在一个唯一的根任务,并且,所有的任务,如果其父任务id不为0,那么必然是一个已经存在的根任务id;执行开销是一个正整数(>0)。系统中至少存在一个作业。
举例如下:
(1,0,2)(2,0,3)(3,1,2)(4,1,3)
对应的任务关系是:
注:括号内的数字表示任务开销
很容易看出来,这些任务树构成了一个森林。每颗任务树有若干个叶子结点,从根节点到叶子结点的路径上所有的执行开销,称作叶子结点对应的任务的总开销。例如上面一共有3个叶子结点任务,分别是任务3,4和2,对应的总开销分别是4,5和3,总开销最大的叶子结点任务是4,对应的总开销是5。
最开始的想法就是用C语言写,毕竟好久都没有编码了,C语言丢到一个文件了里面看着也舒服,做算法,感觉C比Java舒服太多了惹。
#include <string.h>#include <stdio.h>#include <stdlib.h>struct node{ int number; int parent; int cost; };struct tree_node{ int parent; int number; int cost; int leaf; };int main(){ //读取整行数据 char luo[100]; gets(luo); //找到函数特点然后分割字符串 char division[]=")("; //分割后的结果 char *result = NULL; char num_list[10][100]; int i,j,k; //进行分割 strtok不允许嵌套,嵌套的话就无法继续进行,所以先赋值,在进行嵌套 result=strtok(luo,division); int data_num=0; while(result!=NULL){ strcpy(num_list[data_num],result); printf( "result is %s\n", result ); result = strtok( NULL, division ); data_num++; } /* for(i=0;i<data_num;i++){ printf("%s",num_list[i]); }*/ //定义struct结构体数据 struct node nodeT[data_num]; //对于每一个data_num进行分割 for(i=0;i<data_num;i++){ char division2[]=","; result=strtok(num_list[i],division2); int k=0; while(result!=NULL){ //转化为int类型 int res_num; res_num=atoi(result); //分情况存储 if(k==0){ nodeT[i].number= res_num; }else if(k==1){ nodeT[i].parent= res_num; }else if(k==2){ nodeT[i].cost= res_num; //也可以在这里执行 判断是否有子类的步骤,但是还是要等待所有数据都加在之后在进行 k=-1; } printf( "result is %d\n", res_num); result = strtok( NULL, division2); k++; } } //检验结果 for(i=0;i<data_num;i++){ printf("%d %d %d\n",nodeT[i].number,nodeT[i].parent,nodeT[i].cost); } //构建树结构,子类记住父类,父类记住子类是否有节点即可 struct tree_node TreeNode[data_num]; int max=0; for(i=0;i<data_num;i++){ TreeNode[i].number= nodeT[i].number; TreeNode[i].parent= nodeT[i].parent; TreeNode[i].cost= nodeT[i].cost; TreeNode[i].leaf=1; for(j=0;j<data_num;j++){ //判断其是否是叶子节点 if(TreeNode[i].number==TreeNode[j].parent){ TreeNode[i].leaf=0; break; } } //最后整理数据 么么艹 这个点是叶子节点 if(TreeNode[i].leaf==1){ int total_cost=0; int now_parent; now_parent=TreeNode[i].parent; total_cost+=TreeNode[i].cost; while(now_parent!=0){ for(j=0;j<data_num;j++){ //遍历,找到now_parent对应的parent if(TreeNode[j].number==now_parent){ total_cost+=TreeNode[j].cost; now_parent=TreeNode[j].parent; } } } if(max<total_cost){ max=total_cost; } } } printf("最多消耗为%d",max);}
我运行起来,没有什么太大问题的样子,如果出现问题,在修改就是了。
明天研究下Java怎么弄,大致思想懂了的话,其实没啥问题。
别人写的JAVA,明天研究,么么艹
阅读全文
0 0
- 兔子突然想准备面试的第一天
- 准备的第一天
- Android面试准备 第一天 第2-4例
- Android面试准备 第一天 第一例 Handler机制
- 面试新的体会(第一天)
- jeestite第一天--环境准备
- 新来的第一天,小小的code,准备飞翔.
- 第一天面试
- 面试第一天总结
- JAVA面试第一天
- 第一章 引导程序 第一天 耐心的准备
- 学习html5第一天--开发前的准备
- 兔子问题 素数 水仙花数 三个经典C程序的解答 C知识回顾第一天
- 白领的一天 场景9:First day in office为第一天做准备
- 第一篇CSDN博客,记录准备面试的种种
- 写给重新开始的自己(面试的第一天)
- Java面试知识点第一天
- 新年第一天准备写博文,开张大吉~
- 将自定义组件设置为全局组件
- Mac Navicat Premium 11.2.15 简体中文版破解
- solr 部署到 Tomcat
- 消息如何做到 恰好一次 的投递
- Convert Between char* string to wchar_t* string
- 兔子突然想准备面试的第一天
- Java web 解决跨域访问
- Xcode配置PCH文件
- 如何10分钟掌握SQL Server数据库?
- 详解Android动画之Frame Animation
- live555 SETUP处理详解
- 张维迎:只有持续提升中国人享有的自由,方能迎来创新
- Crazy Learning for Day 6
- Mentor.Graphics.FloEFD.16.1.v37xx.Suite.Win64 5CD