【算法习作】中国象棋将帅问题
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
在《编程之美》上的一道题,书上最后一种用结构体的方法我直接醉了,这个确实有点文字游戏的意思,不过其实面试中这反倒考验了被面试者的沟通和理解能力,说白了谁让你不问呢?你不问怎么知道就不能用呢?不要给自己下套。
我给出一个没什么新意,只是对单变量表示的一种新的方法:原理很简单,用一个double,整数位表示A,小数位表示B.,利用了编译器类型转换的特点(环境:g++ 4.4.1)
1: #include2:3: using namespace std;4:5: #define GETA(i) (int)(i)
6: #define GETB(i) (int)((i-GETA(i))*10)
7:8: int main(void)9: {10: for(double j = 1.1;j<10.0;j+=0.1)11: {12: if(GETB(j)%3!=GETA(j)%3)
13: cout << "A=" << GETA(j) << "," << "B=" <<GETB(j)<<endl;14: }15:16: return 0;
17: }18:19:
还有一个更加有意思的讨论在http://blog.csdn.net/silenceburn/archive/2011/01/13/6133222.aspx