C++ LOL OJ 计算火车停站方案
来源:互联网 发布:数据规律分析软件 编辑:程序博客网 时间:2024/04/29 14:07
【题目描述】
我们都知道,火车沿途会经过各种大大小小的站,火车在可能会跳过某些站不停靠,但是肯定不会连续跳过两站及以上。假设沿途一共会有m个站台(火车起初停靠在第一站),一共有多少种不同的停站方案?
【输入】
输入的第一行为一个整数 T (0 < T < 40),接下来为 T 组测试数据,每组只有一个整数 m (0 < m < 40),表示站台的数量。
【输出】
对于每组测试数据,输出只有一行为一个整数,表示可供选择的方案数。
【算法思想】
1.世界本可以更简单但是有的人就是喜欢没事找事,简单的路走起来觉得不高级,其实,是自己很傻逼;
2.直接使用两个数字就可以解决的事情,笔者生来贱命一条,就喜欢用树的结构上去干,所以说傻逼;
3.直接使用斐波那契数列就可以解决的算法,笔者就是采用了二叉树的宽度求解,所以说不是一般的傻逼;
4.和使用非递归的思想实现图的深度遍历一样,本文只是为了数据结构而数据结构,这在算法时间消耗和空间消耗以及比这本就不多的脑细胞消耗上来说是很不划算的,所以说傻逼简直了!
综上,不要盲目数据结构,想好了兼得的方式在动笔!!!
【屌丝代码】
<pre name="code" class="cpp">#include<iostream>#include<stack>#include<vector>#include<queue>using namespace std;typedef struct BiTNode{int data;BiTNode *lc;BiTNode *rc;}BiTNode;BiTNode* createTree(BiTNode*head,int lay,queue<int> q){if(lay == 0){head = NULL;return NULL;}head = new BiTNode;head->data = 1;if(q.size() == 0){head->lc = createTree(head->lc,lay-1,q);q.push(head->data);head->rc = createTree(head->rc,lay-1,q);}else{q.pop();head->lc = createTree(head->lc,lay-1,q);head->rc = NULL;}return head;};int widthTree(BiTNode*head,int lay){queue<BiTNode*> q;int pos,size,width(0),count;q.push(head);BiTNode* tmp;while(!q.empty()){size = q.size();pos = 0;count = 0;while(pos<size){tmp = q.front();q.pop();count++;if(tmp->lc!=NULL){q.push(tmp->lc);}if(tmp->rc!=NULL){q.push(tmp->rc);}pos++;}if(count>width){width = count;}}return width;};int main(){int time,lay_num,width;BiTNode* head = NULL;cin>>time; // 输入测宽次数while(time--){cin>>lay_num; // 输入二叉树层数queue<int> q;//cout<<q.size()<<endl;head = createTree(head,lay_num,q); // 建树width = widthTree(head,lay_num); // 计算二叉树,树宽。cout<<width<<endl;}return 0;}【小结】
1.建立二叉树时,对未安排数据额的节点,赋空值是很有必要的;
2.对二叉树求取树宽时,遇到建树不标准的时候,判断节点是否存在,不仅仅是指针为空的判断很重要,树的结点数据也可以作为节点存在的判据。
0 0
- C++ LOL OJ 计算火车停站方案
- 计算火车运行时间(c语言)
- OJ 2530: 小勇玩lol
- 关于lol伤害计算
- 火车进站 华为oj
- 火车进站-华为OJ
- 华为OJ火车进站
- 火车进出站-字典序输出(华为OJ)
- 计算火车运行时间
- 山东理工大学oj【2396】火车
- 华为oj之火车出站
- 【华为OJ】【072-火车进站】
- 【栈】华为OJ:火车进站
- 火车进站 华为oj(转)
- 水题 刷烟大OJ--2530: 小勇玩lol
- C 停车库程序
- [华为OJ--C++]002-计算字符个数
- LOL
- 申请信用卡窍门
- 一维数组与二维数组
- ecshop的基本操作指示
- Android Studio Gradle项目中添加JNI so文件
- java枚举类型enum的使用
- C++ LOL OJ 计算火车停站方案
- 读配置文件可以保持顺序的 Java Properties 类
- HTML5 地理位置定位(HTML5 Geolocation)
- 如何在managedQuery()和getContentResolver().query()方法中实现结果去重
- 学习笔记:Twitter核心数据类库团队的Hadoop优化经验
- Android 应用程序的图标 (Icon) 应该设计成多大
- hive使用笔记
- [LeetCode]Count and Say
- JSTL常用函数总结