摘要: 位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。C语言提供的位运算符列表:运算符含义描述&按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0|按位或两个相应的二进制位中只要有一个为1,该位的结果值为1^按位异或若参加运算的两个二进制位值相同则为0,否则为1~取反~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0<<左移用来将一个数的各二进制位全部左移N位,右补0>>右移将一个数的各二 阅读全文
posted @ 2011-08-03 20:38 AC_Von 阅读(242) 评论(0) 推荐(1) 编辑
摘要: 今天有点郁闷,想刷两道水题解解闷的,结果找上了这道题,结果。。。。WA了n次,刚开始没考虑到大数,直接写了个整数的递归交上去了,然后WA就下来了!!后来看到discuss里有人说用字符串写,结果整了半天就是WA,没办法,找来别人的代码一看,我晕!以0结束,我直接没判断。。。。悲剧的一天啊~~~ 不说了, 看代码:#include <stdio.h>#include <string.h>int root(int x){ int sum = 0; while(x) { sum += x%10; x /= 10; } if(sum < 10) return sum; e 阅读全文
posted @ 2011-08-03 20:13 AC_Von 阅读(193) 评论(0) 推荐(1) 编辑
摘要: 借杭电这道题总结一下最长上升子序列(LIS)问题,最长上升子序列有o(n^2)和o(nlogn)两种算法(Matrix67那还有一种o(nm)的算法,不过没看懂)。 o(n^2)算法不用多说,就是依次遍历整个序列,每一次求出从第一个数到当前这个数的最长上升子序列,直至遍历到最后一个数字为止,然后再取dp数组里最大的那个即为整个序列的最长上升子序列。我们用dp[i]来存放序列1-i的最长上升子序列的长度,那么dp[i]=max(dp[j])+1,(j∈[1, i-1]); 显然dp[1]=1,我们从i=2开始遍历后面的元素即可。 LIS函数代码如下:// Author: Tanky Woo//. 阅读全文
posted @ 2011-08-03 19:55 AC_Von 阅读(318) 评论(0) 推荐(1) 编辑
摘要: DP,代码有点小白。。。#include <stdio.h>#include <string.h>#define N 351int main(){ int t, i, j, max; int a[N][N], f[N][N]; //freopen("data.in", "r", stdin); scanf("%d", &t); memset(a, 0, sizeof(a)); for(i = 1; i <= t; i++) for(j = 1; j <= i; j++) scanf(&quo 阅读全文
posted @ 2011-08-03 11:08 AC_Von 阅读(306) 评论(0) 推荐(0) 编辑
摘要: From:http://roclinux.cn/?p=864用快捷键,有两个好处:1 成就感!2 效率!停下手里活,学点一举两得的小技能,保证五分钟搞定!“棕色粗体”表示“我推荐的”!Ctrl-A 相当于HOME键,用于将光标定位到本行最前面Ctrl-E 相当于End键,即将光标移动到本行末尾Ctrl-B 相当于左箭头键,用于将光标向左移动一格Ctrl-F 相当于右箭头键,用于将光标向右移动一格Ctrl-D 相当于Del键,即删除光标所在处的字符Ctrl-K 用于删除从光标处开始到结尾处的所有字符Ctrl-L 清屏,相当于clear命令Ctrl-R 进入历史命令查找状态,然后你输入几个关键字符 阅读全文
posted @ 2011-08-03 08:20 AC_Von 阅读(182) 评论(0) 推荐(0) 编辑