• 编程之美——中国象棋将帅问题


      题目要求:中国象棋里的将和帅走在各自的九宫格里,相互不能照面,请写一个程序,输出将和帅的所有位置。要求代码里只能使用一个字节的变量。

    这道题要出结果很容易,用1到9表示九宫格的9个位置,如图

      然后1到9两重循环判断就行了,判断就是两个位置都对3取模,不相等就是不会照面,但是题目要求只能用一个变量,就有点费劲。分析:将帅各9个位置,总共有81种组合,设置一个变量,从1到81,肯定可以表示这81种组合情况。关键就是找到如何用一个变量分别表示将和帅。从9下手,设变量i从1到81递增,发现i%9这个值是1……9,1……9……  而i/9则是1……1,2……2,…………,这个步调与两重循环一致,i/9是外循环,i%9是内循环,故可以考虑用这两个分别表示将帅的位置,思路清晰了,细微调整便可写出代码:

    int _tmain(int argc, _TCHAR* argv[])
    {
        for(int i=0;i<81;i++){
            if((i/9+1)%3!=(i%9+1)%3){
                printf("将%d-帅%d
    ",(i/9+1),(i%9+1));
                count++;
            }
        }
        return 0;
    }

    结果验证是正确的。

  • 相关阅读:
    Java里if...else语句
    Java里for循环和增强版循环;break语句:跳出循环;continue:跳转循环
    Java里while循环和do...while循环
    static 修饰符
    Java类变量(静态变量)
    Java实例变量
    Java局部变量
    Java访问实例变量和调用成员方法
    Java里import语句使用
    声明式服务调用
  • 原文地址:https://www.cnblogs.com/ValiancyHe/p/3177048.html
Copyright © 2020-2023  润新知