Beauty of Programming 1
来源:互联网 发布:数据产品运营专员 编辑:程序博客网 时间:2024/05/18 01:35
买了本编程之美 打算以后看看 也在这里记录一下有关算法方面的东西
有关象棋将帅的位置问题
假设在中国象棋中只剩下将帅两个棋子,国人都知道基本规则:将帅不能出九宫格,只能上下左右移动,不能斜向移动,同时将帅不能照面。问在这样条件下,所有可能将帅位置。要求在代码中只能使用一个字节存储变量。
将帅的田字格自然都可以分为就这样 问题就变成 两个一到九的循环 他们对于3的余数不能一样 一样的话将帅就碰面了
这样的问题 我也花三分钟写完 但问题来了?
什么叫做一个字节储存变量
一个字节 8位,普通的int 是32位 8位只能表示到255 但问题是我们需要两个变量啊,一个字节 是只能用一个变量嘛,还是一个字节可以储存多个变量?
于是我辈俗人根本就没用过的byte登场了, (byte具体是什么不一定 但肯定是一个字节)
我们知道无符号数unsigned char 11111111 可以表示 到255 那我们就把它一分为二嘛,左边4位当将 后边4位当帅 然后就可以了 但是代码量真是多到看不懂
另外一种 就是位域了
1 #include<stdio.h> 2 struct { 3 unsigned char a:4; //半个字节放将 4 unsigned char b:4; //半个字节放帅 5 } i; //一个字节储存变量达成 6 int main() 7 { 8 for(i.a = 1; i.a <= 9;i.a++) 9 for(i.b = 1;i.b <=9;i.b++)10 if(i.a % 3 != i.b % 3)11 printf("A=%d,B=%d\n",i.a,i.b);12 return 0;13 }
一个变量
但其实我们只是想办法把两个变量放在一个字节中 ,一个结构体中 能不能就来一个变量呢?
void Chess2 (void) { unsigned char i = 81; while (i--) { if ((i/9%3) == (i%9%3)) //厉害吧 continue; printf ("A=%d, B=%d \n", i/9+1, i%9+1); } }
其实这个解法也是一个困扰了我很久的问题 关于 取模
经常有那种围成圈的例子 必须取模绕回去
想看懂必须要明白 i/9 和i%9
一个整数可以有两部分var=(var/9)*9+var%9
整个var有很多个9 在这很多个9里面 又有不同
0 9 8 8 //后面是外循环 里面是内循环 一目了然7 8 //当然最后得+16 85 84 83 82 81 80 88 77 76 75 74 73 72 71 70 7
0 0
- Beauty of Programming 1
- Beauty of Programming [Essentials]
- beauty of programming
- 编程之美(The beauty of programming)
- 长方形 --Beauty of Programming(2013全国挑战赛)
- Beauty of Programming 2013资格赛题解(鄙人参照了no.1的程序)
- 《编程之美》(The beauty of Programming) Reading notes
- 传话游戏--Beauty of Programming(2013全国挑战赛)
- 树上的三角形 --Beauty of Programming(2013全国挑战赛)
- 树上的三角形 --Beauty of Programming(2013全国挑战赛)
- The beauty of python 1
- Notes 1 of 《Beauty of Mathematics》
- 2013编程之美全国挑战赛资格赛(Beauty of Programming) 传话游戏
- 题目2:大神与三位小伙伴 Beauty of Programming 2014
- ZOJ 3872 Beauty of Array (The 12th Zhejiang Provincial Collegiate Programming Contest )
- ZOJ 3872 Beauty of Array (The 12th Zhejiang Provincial Collegiate Programming Contest )
- Beauty of simpleness
- Standards of Beauty
- Android四大组件生命周期
- leetcode题集——permutations
- c++——数组指针和指针数组
- websocket学习笔记
- UVA 340-Master-Mind Hints
- Beauty of Programming 1
- Objective-C属性字符串NSAttributedString
- c#——Winform DatagridView上显示下拉树(二)
- java中double类型的数保留两位小数的输出方法并且小数点前面是0的时候如何处理
- 20160714 数组
- 图解tomcat
- Node.js模块导出exports 和 module.exports 的区别
- 2016华为暑期实习生编程题之和尚挑水
- html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍