[读书笔记]编程之美(一)

[读书笔记]编程之美(一)

不得不说编程之美是一本很有意思的书,里面的各式各样新奇的问题,总是可以通过课上讲的简单的问题来解决,对于训练自己的思维的确有很大的好处。一般解决复杂的问题,我们总是可以通过:1、画图:链表、二叉树,2、举例,3、分解:分治法、动态规划来解决。

游戏 程序也是游戏的一种

1.1让CPU占用率曲线听你指挥

  • 题目:用户决定CPU的占有率
  • 思路:(举例)首先我们要明确什么是CPU的占有率,在任务管理器的一个刷新周期内,CPU忙(执行应用程序)的时间和刷新周期总时间的比率,就是CPU的占有率。也就是说调节CPU的忙闲比。
  • 核心代码:
for(;;)
{
    for(int i = 0; i < 9600000; i++)
        ;
    Sleep(10);
}

1.2中国象棋将帅问题

  • 题目:只剩A、B两个将帅,输出A、B所有合法位置。要求在代码中只能使用一个字节存储变量。

  • 思路:(举例)

遍历A的位置
    遍历B的位置
        判断A、B的位置组合是否满足要求。如果满足,则输出。
  • 核心代码:
BYTE i = 81;
while(i--)
{
    if(i/9 % 3 == i % 9 % 3)
        continue;
    printf("A = %d, B = %d\n", i/9+1, i%9+1);
}

1.3一摞烙饼的排序

  • 问题:假设有n块大小不一的烙饼,那最少要翻几次,才能达到大小有序的结果呢?
  • 思路:(画图)我们先把最大的烙饼翻到最上面,然后再翻到最下面,然后对n-1、n-2个饼重复这个过程,至多需要2(n-1)次翻转。如果有几个相对有序就可以略过。
  • 核心代码:
for(int i = 1;i < m_nCakeCnt; i++)
{
    Reverse(0,i);
    m_ReverseCakeArraySwap[step] = i;
    Search(step + 
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值