《编程之美》笔记(一)
1.2 中国象棋将帅问题。
中国象棋中,“将”和“帅”都有九个位置可以选择放置,找出所有将和帅不再一列的放置方法,要求只能使用一个字节存储变量。
这道题的难点在于只能使用一个字节存储变量。第一种思路是用一个字节的高四位和底四位分别保存将和帅的位置,一种方法是使用位操作,略显麻烦,另外一种方法就是使用位域(bit-field),操作比较简单;第二种思路就是利用二维矩阵与一维的对应关系,通过 /C 和 %C 操作得到元素的行号和列号(C为二维矩阵的列数),如下图。
0 | 1 | 2 | |
0 | 0 | 1 | 2 |
1 | 3 | 4 | 5 |
2 | 6 | 7 | 8 |
因为以前只是知道位域这个概念,没有用过,就写一下代码熟悉一下吧。
1 #include <stdio.h> 2 3 struct 4 { 5 unsigned char a:4; 6 unsigned char b:4; 7 } i; 8 9 int main() 10 { 11 for (i.a = 1; i.a <= 9; i.a++) 12 for (i.b = 1; i.b <= 9; i.b++) 13 if (i.a%3 != i.b%3) 14 printf("A = %d, B = %d\n", i.a, i.b); 15 return 0; 16 }
bit-field
4.3 买票找零
有2n个人在排队买门票,门票50一张,其中有n个人手持50的钞票,n个人手持100元的钞票。开始时售票处没有零钱,问这2n个人有多少中排队方式,使得售票处到最后都可以找到零钱。
关于卡特兰数(Catalan)的问题。h(0)=1, h(1)= 1, 当n>=2时,h(n) = h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)*h(0), h(n) = C(2n, n)/(n+1)。
与卡特兰数相关的问题有:
- 矩阵链乘的括号化方案数。
- 多边形的三角剖分方案数。
- n个节点构成不同二叉树个数。
- 圆上n条直线不相交方案数。
- 从(0, 0)到(n, n)不越过连线的走法数。
3.6 判断两个链表是否相交
因为单链表的特点,实际是就是判断两个链表是否有公共节点问题,判断最后一个节点就好了。《剑指Offer》第37题介绍了求两个链表第一个公共节点的方法。
3.7 队列中最大值操作问题
在正常队列基础上增加取最大值操作。其实就是《剑指Offer》第7题:用两个栈实现队列和第21题:包含min函数的栈的结合。可是这道题还是没能做出来...
2.9 斐波那契数列
正常的解法就是递推,不过公式+二分的解法在处理大数据的时候还是挺好的,将时间复杂度优化到了O(log2n)。
2.10 寻找数组中的最大值和最小值
这个题的优化就是分成两个一组,这样只需一次比较就得出的该组的最大值和最小值,将比较次数较少了n/2次。
转载于:https://www.cnblogs.com/xiaobaibuhei/p/3345707.html
《编程之美》笔记(一)相关推荐
- 【经济学】【综合篇】经济机器是怎样运行的
原视频:经济机器是怎样运行的 (时长30分钟) Ray Dalio 前言:经济与我们每一个人息息相关,经济社会的一些变革或举措也会直接或间接的反映到我们每个个体身上.了解经济,提高自己的认知,可以帮助 ...
- 经济机器是怎样运行的
经济机器是怎样运行的 经济机器是怎样运行的是桥水基金创始人/<原则>作者-瑞·达里奥,制作的一部30m的视频,如下是他的简单经济学观点原文所述: 经济就像一部简单的机器那样运行,由几个简单 ...
- 经济机器是怎么运行的
近年来,随着全球化和信息技术的蓬勃发展,经济机器已经成为了社会发展必不可少的组成部分.那么,经济机器是如何运转的呢? 首先,我们需要了解经济机器的基本构成要素.经济机器由供求关系.产业链和市场三大要素 ...
- 《经济机器是怎样运行的》笔记(三)
19:20-31:00 19:20 去杠杆化导致债务过重,减轻债务有四种办法: 削减支出:个人.企业.政府削减支出(紧缩) 减少债务:通过债务违约或重组(萧条) 财富再分配:将财富从富人转给穷人 发行 ...
- 《经济机器如何运转》笔记
视频链接:[Ray Dalio]三十分钟看懂经济机器如何运转(比尔盖茨推荐) 影响经济的三要素 生产率的提高 短期债务周期 长期债务周期 理解交易 每次交易中:买方使用 货币/信用 向卖方获取 商品. ...
- arm-linux 程序开发入门(QT窗口应用程序、编码、交叉编译、调试)(三机器和双机器搭建方法)(笔记)
Linux及Arm-Linux程序开发笔记(零基础入门篇) 文章目录 前言 一.Arm-Linux程序开发平台简要介绍 1.1程序开发所需系统及开发语言 1.2系统平台搭建方式 二.Linux开发平台 ...
- 《基于小型训练集的深度学习迁移的食用毒蘑菇机器视觉识别系统》论文笔记
<基于小型训练集的深度学习迁移的食用毒蘑菇机器视觉识别系统>论文笔记 链接:Machine Vision Recognition System of Edible and Poisonou ...
- 让VC编译的Release版本程序在其他机器上顺利运行
让VC编译的Release版本程序在其他机器上顺利运行 Posted on 2011-07-29 15:06 单鱼游弋 阅读(939) 评论(0) 编辑 收藏 链接的时候分静态链接和动态链接两种. 静 ...
- Qt5.5-msvc2013-x64编译的程序在其它机器上无法运行,提示0xc000007b错误
问题描述:在win7系统上,使用Qt5.5+msvc2013-x64编译的程序在其它机器上无法运行,提示0xc000007b错误. 解决过程: 在网上查看解决方案,一度受到误导,看到大量的说需要安装D ...
- 基于神经网络的机器阅读理解综述学习笔记
基于神经网络的机器阅读理解综述学习笔记 一.机器阅读理解的任务定义 1.问题描述 机器阅读理解任务可以形式化成一个有监督的学习问题:给出三元组形式的训练数据(C,Q,A),其中,C 表示段落,Q 表示 ...
最新文章
- 【机器学习】RNN循环神经网络
- chromium浏览器_全新Edge浏览器上线,Chromium内核,可通过Windows Update更新
- 从官网下载的python包如何使用-如何下载python包
- challenging and foundational
- 火狐浏览器 xml 解析错误:文档元素后存有无效内容_五分钟了解浏览器工作原理...
- 2017年游戏营收报告公布,谁是去年最大的赢家?
- flink fi java_Flink DataStream API编程指南
- python中的zip函数详解_python中的 zip函数详解
- Atitit uke plnsy安全隐私保护法案 目录 第一章 一般规定	2 第1节 主题与目标	2 第二章 常见安全原则	3 第1节 隔离 保密 shell	3 第2节 隐藏 保密 不出头	3
- 微博上一些有用的话(四)
- Axure RP 9 原型图的绘制及交互
- Java实现抽象工厂模式
- 一篇关于运放自激振荡的帖子
- java 鼠标变成手型_当鼠标放在按钮上时让指针变为手型
- WPF软件导致Win10系统的平板电脑小键盘自动隐藏问题
- (转)七个受用一生的心理寓言
- Android 曝光采集(商品view曝光量的统计)
- 如何打造一款游戏外挂
- 从中国500年前文人的角度重识只狼(sekiro)的场景设计
- 心理学相关学习备忘录