zoukankan      html  css  js  c++  java
  • 编程之美——中国象棋将帅问题

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

    这道题要出结果很容易,用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;
    }

    结果验证是正确的。

  • 相关阅读:
    多线程
    泛型
    枚举、注解
    重写comparater比较器
    Arrays工具类和Collections工具类
    重写equals和hashCode的方法
    遍历集合的方法
    关键字总结
    having 的用法
    HTTP协议
  • 原文地址:https://www.cnblogs.com/ValiancyHe/p/3177048.html
Copyright © 2011-2022 走看看