编程之美阅读心得

3.30

今晚开始正式阅读编程之美。今晚心神有点乱。用了两节时间看了一道题:NIM游戏。就是给M颗石头,让你发堆,然后先B后A的顺序拿,每次拿1个以上。问如何分堆才能保证A必胜。

我的结论是:

(1)如果存在一个对A的安全状态T,那么如果T‘能够在一步转为T,则T’是A的必败状态。

(2)此题的思路的关键是确定一种A的必胜的模式:比如分偶数堆,每堆个数相同。

—–其实思路应该更简单一些,就是对M分情况讨论,如果M是偶数,如何分堆必胜:两堆,个数相等。

(3)对M为奇数的情况,还没有想得很清楚。

 

—–答案很聪明地将这个问题归结为XOR的模式,使用XOR的确能够提炼出这个问题的实质。但是有没有更直观,或者更能推导出来的数学形式呢?

 

——————————————————————————————————————-

4.1

今晚完成的是Task Manager CPU的曲线控制。

主要掌握了:

1. 使用GetTickCount来控制时间。

2. 对TaskManager的控制主要的观点是:

   (1)首先应该想到要控制TaskManager的曲线,首先要确定其显示曲线的刷新频率,和曲线点位置的计算方法,这里记录一下是CPU在刷新周期内忙和闲时间的比率。

   (2)根据上述分析就可以知道,只需要利用两个代码段:Busy和Idle就可以实现对CPU的控制。

   (3)而画出曲线的方法就是控制曲线各个SPLIT上的BusyTime和IdleTime即可。使用预先计算好的数组就可以完成这样的功能了。

 

 

==========================================

_PROCESSOR_POWER_INFORMATION info;

 

CALLNTPowerInformation(11,NULL,0,&info,sizeof(info));

 

__int64 t_begin = GetCPUTickCount();

 

__int64 t_end = GetCPUTickCount();

 

double millisec = (double(t_end) -(double)t_begin)/info.CurrentMhz;

=================================================

以上这段代码是关于调用CPU内部信息的,没有完成弄好,需要引用 <powrprof.h>,还要引用powrprof.lib这个库文件。

这里有写求助帖:http://bbs.pediy.com/showthread.php?t=96926

 

    原文作者:huangzheguyun
    原文地址: https://blog.csdn.net/huangzheguyun/article/details/5435097
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞