[日记] 自学生活点滴随记。
hot101吧
全部回复
仅看楼主
level 6
Corvus_Hot 楼主
自学生活 未免会孤单。。 愿这个帖子伴随我 做我吐槽 记录生活的利器吧。 昨晚一点睡的,本想着睡过早自习去图书馆,结果睁眼发现,才六点四十。。。 听不动听力了,拿本英语小说来看。 大战火星人,话说这书情节很幼稚。。
2011年05月18日 23点05分 1
level 5
要不要灌水呢?还是水一个吧……
2011年05月19日 00点05分 3
level 6
Corvus_Hot 楼主
8:20 载着葱姐 来到图书馆... 上午 要把八数码解决哈..
总结一下昨天学到的东西 防止遗忘..
单片机:
单片机系统 是单片机+外围电路,控制二极管发光的是,高低电平。
在单片机汇编语言中,如果要输入16进制,要在结束上标记H,否则默认十进制。
如二进制: 0000 0000 十六进制:00H
如果十六进制数以ABCDE开头,那么前面要加 0
如 1111 1111 十六进制:0FFH.
初始汇编:
什么是汇编呢?汇编是计算机最简单的语言,广泛应用于硬件上.
汇编指令结构: START:MOV P1,#00H; 都是什么学术名字来着,忘记了...
     
对(脚管,呀忘记是什么名字了..回去看书)输入低电平,00000000,#是即数(这个名字也忘记了..)符号,代表常量..
几个简单的指令:MOV,赋值语句;CALL,应该是调用函数;DZNL,这个指令忘记了...是不是这么写对的.END.JMP跳转..

2011年05月19日 00点05分 5
level 6
Corvus_Hot 楼主
C语言:
对变量有了进一步了解 每次初始化一个变量是 其实就是在内存中建立了一个地址 而int a=3;
=号呢 也就是让这个地址指向3..
   而函数是不能改变形参数值的,无论他是地址还是神马,所以在用a做形参变量时,不能直接改变它的值,但是当用&a做形参时,却可以改变&a的“指向”,所以实际的形参是为发生变化的..
void change(int *a)
{
   *a=5;
}
   而当结构体做形参变量时,就有一点需要注意了。如何改变结构体的成员变量呢,这里有用到了“->”,为什么不用“.”呢,光哥说前者表示指针,后者表示结构.. 微微理解一下..
stuct node
{
   int x;
}tree;
错误,编译器不执行:
void change(node *st)
{
   st.x=5;
}
正确:
void change(node *st)
{
   st->x=5;
}
嗯,就是这样。。
开始刷题喽... 昨天晚上写哈希写挂了. 龙杰大战八数码,嘎嘎~[俯卧撑]

2011年05月19日 00点05分 6
level 6
Corvus_Hot 楼主
读取文件截的办法
while(scanf("%s",str)!=EOF)
while(gets(str))
2011年05月19日 02点05分 8
level 6
Corvus_Hot 楼主
手写了一个小时的程序...开始输入喽~
2011年05月19日 02点05分 9
level 5
天啊。逛贴吧都可以学编程。牛!!![顶]
2011年05月19日 11点05分 11
level 6
Corvus_Hot 楼主
晕了 晕了 今天班委去喝酒去了...
八数码 没写 啊!!! 我错了..
2011年05月19日 15点05分 12
level 7
!!!!!
2011年05月19日 15点05分 13
level 6
Corvus_Hot 楼主
带着午餐泡面 来到图书馆..
嗯嗯,难得一天没有实验课,没有会开..
好好享受这一天~
[飞吻]
2011年05月20日 00点05分 14
level 6
Corvus_Hot 楼主
形参 是函数 java是方法 所调用的变量啊~~~
不是指针...
class world{
int x;
void getdata(int value) // 这个value就是形参的.[扯花]
{
   x=value;
}
}
2011年05月20日 00点05分 15
level 6
Corvus_Hot 楼主
宏定义 又坑爹了...
大家看两个典型的错误 我都错过.. 做题能看出来 自己实际用 真就挂掉了~
#define N 9*7*6*5*4*3*2
#define swap(a,b) temp=a;a=b;b=temp;
int main(){
long long a=9099999;
long long c=a%N;
if(c>0) swap(a,c);
return 0;
}

2011年05月20日 00点05分 16
level 6
Corvus_Hot 楼主
怎么样 是不是debug不出来 很细节的东西 坑爹啊!!

正确的
宏定义 应该这么写~
首先是
#define maxn (9*8*7*6*5*4*3*2)
#define swap(a,b) {temp=a;a=b;b=temp;}
不加括号和{}的话,因为电脑很傻帽,电脑直接把你输入的字符看成是一行命令 不给你加括号 因此
if(c>0) {temp=a;}
a=b;b=temp;
当c不满足条件是 电脑会执行吼两句 因此你的变量将是一团糟!!...

2011年05月20日 00点05分 17
level 6
Corvus_Hot 楼主

单向bfs+哈希 果然超时了...
不过至少独立完成的....
又是debug了2小时... 不行啊.....
高手是20%时间完成80%程序,剩下80%时间完成20%的程序..
我是20%时间写程序,80%debug..
不过熟练的使用while(1); printf..找到错误的地方 嗯,也挺好...
上楼上看A*去了.. 刚看到一穿今年校赛阿里巴巴队服的人在我旁边刷题,嫉妒啊,我也想要一件t..
加油!
2011年05月20日 02点05分 18
level 6
Corvus_Hot 楼主
这帮打游戏的孩子们 可算带着电脑离开了图书馆 终于有网速了...
刚才哥查个资料 都卡死啊!! 妹妹...
2011年05月20日 03点05分 19
level 6
Corvus_Hot 楼主
关于hash的优化 有用到逆序数
 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。如2431中,21,43,41,31是逆序,逆序数是4,为偶排列。

2011年05月20日 04点05分 20
level 6
Corvus_Hot 楼主
具体怎样优化呢 用到了康拓展开公式~~首先给你一个自然数序列 例如 1 2 3 4 那么它可以自由组合
现在求3214 是第几大数字
小于三有两个数 1,2 2*3!小于二的数有一个 1*2!小于1的没有 0*1!那么比3214小的数 就有2*3!+1*2!+0*1!那么3214 就是第(2*3!+1*2!+0*1!)+1 大的数
因此我们可以得出公式嘛 就是求这个自然数不重复出现随机分布数(只会这么形容)的大小
就是求 每一位的 逆序数*这一位权值的阶乘的和,最后再再这个和的基础上+1;
逆序数的定义 我上面有提到~ 具体怎么求逆序数呢?~~ 我想起了 树状数组的第三个用法 哈哈
果断去翻看ppt~~

2011年05月20日 06点05分 21
level 6
Corvus_Hot 楼主
上午由于我的但bfs 超时了 我就百度了一下其他算法。
双向bfs: 我最终用这个写的.思想就是,从首位同时进行宽度有限搜索,逐层搜索,当有交接时,那么就找到了终点~ 这样节省了一般的时间,并且开销是开根号的~~ 下面是我自己写的模版哈~
visit_head[N],visit_tail[N];//开两个地图
...
//其余都和单bfs一样,只是开两个~
bool cmp(node queue[],head,tail)
{
   for(int i=head;i<tail;i++)
   if(now==queue[i])
   //随你怎么操作 也就是前后有交叉了~
   return 1;
   return 0;
}//这个是和 单向bfs不同的地方~
...
while(head<tail)
{
   两次bfs 中间判断是 用cmp函数~~~
}
结果我的八数码 还是t了... 因为用的哈希 没有康拓展开优化... 现在给他优化一下~~
A*算法:
这个算法类似与贪心。 每次展开时,进行判断,按最有可能获得最优解的几率排序,放在队列尾部。这个是思想,他有一个公式F(X)=G(X)+H(X);具体怎么实现,我还没写... 等下次再有类似的题目,再说吧~~
嘎嘎,我发现最近用到了好多数学知识,但这些数学知识全都不是课本上教的!! 
2011年05月20日 06点05分 22
level 6
Corvus_Hot 楼主
从早上 8点开始写八数码
用了 哈希 bfs 双向bfs 康普展开 判断是否有解 妹妹 结局还是tttttt ttttt tttttt
不过这就是acm的生活啊 不急不躁 慢慢写....。。
2011年05月20日 09点05分 23
level 6
Corvus_Hot 楼主
果断 开始猥琐的看人家的AC代码.....
2011年05月20日 09点05分 24
1 2 尾页