8.3
这几天等ms通知中…在家没啥事只好yy C++builder....家里还是比较爽啊..就是没有网…很多东西都不能查..只好自己YY…..
这几天熟悉了一下C++ builder..把下好的一堆教程拿出来看….发现只有一个还比较实用…..YY…..把万老师的程序翻出来研究…自己先搭了一个简单界面…我负责的是编辑功能..然后把万老师的文档拿出来看..发现编辑功能是最繁琐的- -||….有很多疑问啊…
比如C++builder定义了很多类如Tlist,AnsiString,Set等…那Cstring之类的在这里还能用吗,C++builderms还有自己的一套语法?比如..现在只是搭了一个框架,一些控件的消息响应函数应该怎么加进去呢....C++builder是不是还有自己的一堆函数库,结构,Tbitmap是C++builder里面的图像的结构体吗,Tform又是啥??很多都不知道…
下一步:先学下语法…再熟悉下如何制作工具栏之类的….然后继续研究万老师代码…奇怪的是万老师的代码运行出来为什么没有界面呢…
8.7
Builder玩了几天….比较熟悉了..但是不能上网..很多问题还不明白…比如说TForm的响应函数FormPaint是怎么产生的还是不知道…随便乱点只产生FormCreate函数…FormPaint和FormCreate的区别….还有为什么我建的工程里面加的控件,在对象检查窗口里面的颜色比较淡….感觉不太正常好像…..大概把握了一下…对于C++builder里面的对象还要多了解,比如窗口,按钮的属性….C++builder控制鼠标的函数,,画图的函数都怎么用….
发现我犯了一个错误…跟着人家把编辑器改成黑色的…结果看万老师的代码的中文注释看不到了….还想着万老师要是加点中文注释就好了….一堆函数都不知道干嘛的….结果发现….真是杯具….
Ms连个拒信都不肯发…气人..
8.8
终于知道FormPaint如何产生了….原来双击events里面的onpain的编辑框就可以了…..- -|||…..不过还有响应函数的作用google后才知道….
重新画了一遍框架…
8.11
ToolBar->ToolButton
ImageList
将图标加到ToolButton
Csdn真是好东西
Clipboard()
8.16
今天看我8.3号写的东西...觉得我很白痴..
C++builder有许多封装的类..很适合写图形界面等面向对象的东西..比MFC简单多了..
总之...感想:
学会google...
学会YY...
I like CSDN...
posted @
2010-08-12 13:11 ccyy 阅读(722) |
评论 (0) |
编辑 收藏
1、广度优先搜索二叉树
typedef struct btree
{
int data;
btree *L;
btree *R;
}btree;
void BST(btree *Tree)
{
queue<btree*> q;
btree *p=Tree;
q.push(p);
while(!q.empty())
{
p=q.front();
q.pop();
printf("%d",p->data);
if(p->L)
q.push(p->L);
if(p->R)
q.push(p->R);
}
}
2、输出一个字符串的所有排列(字符串可能有重复字符)
void search(char s[], int i, int n)
{
int j;
char temp;
for(j=0;j<n;++j)
{
if(j!=0 &&s[j]==s[j-1])
;
else if(s[j]!='@')
{
p[i]=s[j];
s[j]='@';
if(i==n-1)
{
p[n]='\0';
printf("%s\n", p);
}
else
{
search(s,i+1,n);
}
s[j]=p[i];
}
}
}
3、判断一个链表是否有环
typedef struct node
{
int data;
node *next;
}node;
bool IsLoop(node *head)
{
node *p=head;
node *q=head->next;
node *tmp;
if(q->next==p)
return true;
while(p!=NULL&&q!=NULL&&p!=q)
{
p=p->next;
tmp=q->next;
q=tmp->next;
}
if(p==NULL||q==NULL)
return false;
else
return true;
}
4、一个0-n的数组的元素大小为0-n,判断是否有重复
bool IfDuplicate(int *a,int n)
{
for(int i=0;i<n;i++)
{
while(a[i]!=i&&a[i]!=-1)
{
if(a[a[i]]==-1)
return true;
int j=a[i];
a[i]=a[a[i]];
a[j]=-1;
}
if(a[i]==i)
a[i]=-1;
}
return false;
}
|
posted @
2010-07-28 16:49 ccyy 阅读(436) |
评论 (1) |
编辑 收藏
今天去微软面试...紧张ing...
中午11:00从学校出发..1号线转5号线然后打D到上海科技园..到了以后不知道怎么联系面试官...囧...打电话问了下DY...然后1个mm来带我去了某个空会议室...等了大概10min...一个胖胖的面试官进来了...先问了我一些项目经历之类的...然后问我会玩24点吗?我说会。然后让我算6,6,10,10....算不出来(后来发现这个根本没有答案- -||)然后问我要怎么写个程序来出24点的难题.....
思考中.我说如果4个数可以化成2个数想乘积等于24,这四个数应该算是比较简单的..然后他又提醒我从数学的角度定义..哎..还是想不出..后来才其实这个题目ms是开放性的....当时脑抽了..早知道和他胡扯一堆可以自圆其说就好了..然后他让我做了一道比较水 的字符串的题目..当场在白板上写代码..就是给一个字符串,这个字符串由有空格隔开的单词组成,处理这个字符串,使输出的字符串相邻的单词不重复;如输入what is is this,输出what is this,实在是ACM的水题..但是还是出现了一些脑残的错误,,回来重新敲了下代码
#include<stdio.h>
#include<string.h>
void Noduplicate(char *str,char *res)
{
int i=0,j=0,pre=-1;
int l=strlen(str);
while(i<l)
{
if(str[i]==' ')
{
res[j++]=str[i++];
continue;
}
if(pre==-1||str[i]!=str[pre])
{
pre=i;
while(i<l&&str[i]!=' ')
{
res[j++]=str[i++];
}
}
else
{
int flag=0;
int tmp_p=pre,tmp_i=i;
while(tmp_i<l&&str[tmp_i]!=' '&&str[tmp_p]!=' ')
{
if(str[tmp_p]!=str[tmp_i])
{
flag=1;
break;
}
tmp_i++;tmp_p++;
}
if(flag)
{
pre=i;
while(str[i]!=' ')
{
res[j++]=str[i++];
}
}
else
i=tmp_i+1;
}
}
res[j]='\0';
}
int main()
{
int i,j;
char str[100],res[100];
while(gets(str)!=NULL)
{
memset(res,0,sizeof(str));
Noduplicate(str,res);
printf("%s\n",res);
}
return 0;
}
第一轮面完后又来了一个mm...进来让我自我介绍几句,就让我做题..也是比较水的字符串匹配的题目..给两个字符串是*s和*str,s由子母'*’组成,*可以表示i个*号前面的一个字符,i=0-n;str只有子母,问两个串是否相同,例如*s="AB*C",*str="ABBBBBC",则连个字符串相同..
我先想了一个线性扫描的做法..但是ms有很多细节问题..然后我又写了一个DP的做法..但是复杂度太高了..然后面试官让我我改线性的做法..ms怎么改都有点问题..我只好想了一个优化的方法..大概混过去了..
回来问了天哥..改了下,可以先处理一下字符串,如将AB*B改为ABB*,因为两者是等价的..然后线性扫描就可以了...代码如下
#include<stdio.h>
#include<string.h>
bool ifmatch(char *s,char *str)
{
int i=0,j=0,k,pre=-1;
int s_len=strlen(s);
int str_len=strlen(str);
for(i=0;i<s_len;i++)
{
if(s[i]!='*')
pre=i;
if(s[i]=='*')
{
if(s[i+1]!='*'&&s[i+1]==s[pre])
{
k=i;
while(s[k]=='*')
k--;
k++;
char temp=s[k];
s[k]=s[i+1];
s[i+1]=temp;
}
}
}
//printf("%s\n",s);
pre=-1;
i=0;j=0;
while(i<s_len&&j<str_len)
{
if(s[i]!=str[j]&&s[i]!='*')
return false;
if(s[i]=='*')
{
while(str[j]==s[pre])
j++;
i++;
}
else
{
pre=i;
i++;j++;
}
}
if(j<str_len)
return false;
while(i<s_len)
{
if(s[i]!='*')
return false;
i++;
}
return true;
}
int main()
{
char s[200],str[200];
while(scanf("%s %s",s,str)!=EOF)
{
if(ifmatch(s,str))
printf("yes\n");
else
printf("no\n");
}
return 0;
}
只面了两轮就出来了..ms还比较水...明显比DY大牛的水....累..还是感觉比较搓...
posted @
2010-07-28 16:26 ccyy 阅读(199) |
评论 (0) |
编辑 收藏
今天纠结了一下二叉排序树的一些操作..插入,查找,前序,中序和后序遍历
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct bTree
{
int data;
int key;
struct bTree *L;
struct bTree *R;
};
bTree *insertnode(bTree *root,int key,int value)
{
bTree *newnode;
bTree *current;
bTree *back;
newnode=(bTree*)malloc (sizeof(bTree));
newnode->data=value;
newnode->L=NULL;
newnode->R=NULL;
newnode->key=key;
if (root==NULL)
{
//printf("\nIt is error!No element!\n");
return newnode;
}
else
{
current=root;
while(current!=NULL)
{
back=current;
if (current->key>value)
current=current->L;
else
current=current->R;
}
if (back->key>value)
back->L=newnode;
else
back->R=newnode;
}
return root;
}
bTree *createbtree()
{
bTree *root=NULL;
int data,key,n;
scanf("%d",&n);
while(n--)
{
scanf("%d %d",&key,&data);
root=insertnode(root,key,data);
}
return root;
}
void PreOrder(bTree *p)
{
if(p)
{
printf("%d ",p->key);
PreOrder(p->L);
PreOrder(p->R);
}
}
void InOrder(bTree *p)
{
if(p)
{
InOrder(p->L);
printf("%d ",p->key);
InOrder(p->R);
}
}
void PostOrder(bTree *p)
{
if(p)
{
PostOrder(p->L);
PostOrder(p->R);
printf("%d ",p->key);
}
}
bool search(bTree *p,int key,int &data)
{
if(p)
{
if(p->key==key)
{
data=p->data;
return true;
}
else if(key<p->key)
return search(p->L,key,data);
else
return search(p->R,key,data);
}
return false;
}
void depth(bTree *p,int lev,int *pe)
{
if(p)
{
if(lev>*pe)
{
*pe=lev;
}
depth(p->L,lev+1,pe);
depth(p->R,lev+1,pe);
}
}
int main()
{
bTree *p;
int n,i=1,j=0;
p=createbtree();
PreOrder(p);
printf("\n");
InOrder(p);
printf("\n");
PostOrder(p);
printf("\n");
depth(p,i,&j);
int key,data;
scanf("%d",&key);
if(search(p,key,data))
printf("%d\n",data);
printf("\n");
return 0;
}
posted @
2010-07-26 17:05 ccyy 阅读(159) |
评论 (0) |
编辑 收藏
终于把《哈利波特与死亡圣器》看完了..头脑还处于兴奋状态...哈利波特还是如此令我着迷...哈利波特可以说陪我度过了初中,高中的时光...还记得以前新华书店里一边听着书店里放的《go home》一边津津有味的沉浸在哈利波特中....日子真是无忧无虑..当时特别向往JK.罗琳所描又述出来的魔方学校霍格沃茨...真的是一个既虚幻又真实而又有趣的世界..每个巫师有都特制的魔杖...画框里面的人都会说话还有思想..学校里有各种有趣的东西.比如说分院帽,哈利神奇的隐形衣。。各种有趣的课程,魔药课,黑魔法防御术..里面还有相当于政府部门的魔法部。。相当于银行的古灵阁(由妖精看守的)...相当于死牢的阿兹卡班(由恐怖的摄魂怪看守)...有了魔杖,很多事情好像念念咒语就可以轻松解决..还可以幻影移形..多好玩....还有魁地奇这种类似与现实生活中世界杯的活动..不过比世界杯ms好玩多了..运动员都骑在扫帚上飞来飞去...总之这是一个罗琳YY出来的世界..并且还可以自圆其说.
JK.罗琳真的是个了不起的作家...感觉整个哈利波特的故事的情节跌宕起伏,环环相扣,而且前呼后应...最后一本书写的东西好像在第一本已经埋下伏笔了...每次读哈利波特都让我爱不释手..总是一拿起来就不愿放下..而且每个人物都塑造的非常鲜活...总感觉都能想象出每个人物的样子..勇敢的哈利.聪明,成绩好的不得了的赫敏.格兰杰...搞笑的双胞胎兄弟..慈祥而且睿智的邓布利多...大大咧咧的海格..愚钝但是充满正义感的挪威.隆巴顿...有点神经质的卢娜.洛夫古德..骄傲冷漠的德拉科.马尔福..没有一个人物不是活灵活现...
据说JK.罗琳原来是个单身母亲...为了写哈利.波特..每天到一个咖啡馆区.把哈利波特的故事写在小纸片上...功夫不负有心人。。哈利.波特给他带来了巨大的财富..更给了我们一个奇特的想象空间...
看完了哈利波特..有好多值得回味的地方..如邓布利多精心的策划安排..比如阿兹卡班囚徒中时间倒转的机器...火焰杯中的三强争霸赛的阴谋...寻找魂器的艰辛探索过程..也有许多感人的场面..例如小精灵多比为了救哈利.波特而牺牲...小天狼星的殉职..
告一段落..最近堕落了..都沉浸在魔幻世界中.....该干点正事了..睡觉去..
posted @
2010-07-26 03:18 ccyy 阅读(221) |
评论 (0) |
编辑 收藏
昨天晚上和帅哥聊天...竟然考我i++和++i的区别...只是到++i比i++更快一些,i++是先执行后自增,++i是先自增然后执行..于是google之.....
The answer is :
1、++i的效率确实比i++的要高,因为对++i来说,整个表达式的值就是i的值,没有进行中间值的考贝工作,所以效率高;而对于i++来说,整个表达式的值是i增1之前的值,它会考贝一份i增1之前的值作为整个表达式的值,所以效率低。
2、++i这个表达式产生的是一个左值,可以把这个表达式用在一个需要一个左值的地方,如赋值表达式的左边:++i = 8; 而i++产生的是一个右值,不能用在一个需要左值的地方。
学习了...但是还是不太清楚那个拷贝时啥意思...
posted @
2010-07-25 14:32 ccyy 阅读(223) |
评论 (0) |
编辑 收藏
今天微软电面...有一个题目是将链表反转,返回头结点...差点嗝屁..于是把链表纠结了一下...
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct st
{
int data;
struct st *next;
};
//reverse list
struct st *reverse(struct st *head)
{
struct st *p=head->next,*q;
struct st *Head;
q=p->next;
p->next=NULL;
Head=p;
p=q;
while(p!=NULL)
{
q=p->next;
p->next=Head;
Head=p;
p=q;
}
head->next=Head;
return head;
}
//insert list
void Insert(struct st *head,int x, int i)
{
struct st *p=head->next,*q=head;
i--;
while(i--)
{
q=p;
p=p->next;
}
struct st *now = (struct st*)malloc(sizeof(struct st));//
now->data=x;
now->next=p;
q->next=now;
}
//delete list
void Delete(struct st *head, int x)
{
struct st *p=head->next,*q=head;
while(p!=NULL)
{
if(p->data==x)
{
q->next=p->next;
}
q=p;
p=p->next;
}
}
int main()
{
int n,m,i,j;
struct st head;
head.next=NULL;
for(i=1;i<=8;i++)
{
insert(&head,i,i);
}
struct st *Head=reverse(&head);
struct st *p=Head->next;
while(p!=NULL)
{
printf("%d\n",p->data);
p=p->next;
}
Insert(&head,10,1);
Delete(&head,4);
Delete(&head,10);
Delete(&head,8);
p=Head->next;
while(p!=NULL)
{
printf("%d\n",p->data);
p=p->next;
}
return 0;
}
posted @
2010-07-22 21:55 ccyy 阅读(111) |
评论 (0) |
编辑 收藏
大一大二的acmer都在紧张的集训中..无聊切PE中..。发现一个很不错的函数
可以将int型的整数转换为任意进制字符串表示形式,函数调用形itoa(int number,char buf,int type),如果number=5,type=2.,则执行后buf="1001",相应的如果type=3,就把number转换为相应的三进制的字符串的表示形式。
int main()
{
int temp;
char buf[300];
sprintf(buf,"%d",temp);
char buf1[300];
itoa(temp,buf1,2);
return 0;
}
posted @
2010-07-21 10:42 ccyy 阅读(190) |
评论 (0) |
编辑 收藏
嵌入式答辩完毕…突然觉得人很空虚…不知道该干什么了..答辩杯具了..讲ppt还好的…演示的时候由于光线太亮…手势识别都不准了…在实验室测的时候都准的..…只能听天由命了…答辩以前还信心满满的…
今天离开112,有点不舍..回到210坐卧某个猥琐的位置…才发现112真是圣地啊….想到三个月的时间和心血就要付诸东流了……….最后半个月的时间…嵌入式+考试+EDA大作业…….基本都是杯具…成绩很难看….每次考试的成绩都比期望值低….以失望告终…什么时候才可以RP++…..可恶EDA大作业…被maxplus2折磨了整整一天一夜...科技英语都来不及复习了….辛辛苦苦的敲代码…结果还可怜的70+…..某些人直接拿上届的程序仿真了一下80+…不公平….决定告诫以后的学弟学妹们….千万不要自己做..只要百度就可以了….
说到嵌入式竞赛…队友还是挺好的…虽然某个人ms经常BS我说话还很怎么说…直接?..
首先开始没有一个总体的规划….以至于做完手写板后不知道要做什么了…没有具体的分工…
其次,遇到问题没有及时解决..答辩前一天晚上我们还在纠结zigbee发送的图像数据出现镜像的问题…我都急死了,这样的效果跟本没法拿出去见人的...(这次用zigbee简直就是一个巨大的杯具,zigbee本身就速度慢…..而且发送的时候会出现各种错误…答辩的时候果然被专家问到… 杯具….)又比如说屏幕操作不够精确的问题….答辩的时候也嗝屁了…总之我们之间还是缺乏交流….该解决的问题没有提前解决…效果没有达到。
如果最后真的很杯具什么奖都没拿…我也没什么好说的..平心而论,也并有花100%的精力做嵌入式竞赛….个人能力来说,觉得提高的也不多,对c++的工程有了比较深入的了解,以前都没有什么概念,做ACM的题目的时候都只是随便建个cpp文件就开始敲了..自己写了一个基于手势识别的虚拟钢琴的程序,感觉一下子明白了很多,虽然最后由于时间问题,这个功能还是没有加进去…实践还是很重要的..还有就是对图像处理的类库openCV比较熟悉了一些 …
回到210看到大二一的acmer都在集训了…好像回到大二,变成他们的一分子….每天研究算法,切题,背背CFOP公式…..去年的这个时候,对regional是那么向往,话说昨天shmm问我是否想去regional,还是犹豫了一下,当然想是想的..可是还要准备保研,实习什么的,去regional也是打酱油…..组队赛也ms比较紧张,万一连去的资格都争取不到。。。。so 还是算了…
突然感觉很没方向感,转眼大三就结束了….何去何从,没有像一些人一样早就下定决心要考研,高数都看好几遍了..实习也没有着落….或许这时候实习生都招满了…投了MS简历后一个月后终于有电话过来…可是还是感觉希望渺茫….前两天想嵌入式一结束就回家的…现在又感觉无所谓了….
好好想想….
posted @
2010-07-20 22:07 ccyy 阅读(769) |
评论 (2) |
编辑 收藏
周日下午的组队赛….我和天哥做的…由于感冒比较严重….头晕眼花..基本上是天哥一人在辛苦的敲代码….
11:30 到210,和天哥纠结了下队名,一直感觉我RP比较差….干脆叫RP++吧…天哥同意….开始的时候天哥从前往后,我从后往前,瞄一眼题目,发现EScrpt MSM 很眼熟,看了一下…感觉比较水,这时天哥跟我说C是个概率题,ms比较水,吩咐我搞B,他搞C,天哥噼里啪啦搞定…交了下,WA,发现犯了SB错误….再交…WA…一直wa….这时很多人都过了B…于是先把我的B交了….CE一次..memset忘了加string.h……哭死….Ac后rank5,然后天哥吩咐我把其他题目都看一遍他继续搞C.....突然发现Crejudge了…过了…….rank2 ,可以安心了…和天哥说了下其他题的意思…天哥说第一题题目不太清楚…..要我帮忙看看…于是一起搞A,wonder team。天哥觉得这题n较大的时候一定排名是最后的…就是要搞清楚小数据的情况,于是和天哥一起算n=4的情况,确定是2后天哥噼里啪啦搞定代码两三百B的样子跟我说要交了….把我雷到了…一交竟然AC了…更把我雷到了…师父眼光就是犀利….不过感觉这题在欺骗别人感情?…这时rank1…不过很快ACHuntler也发现了这题大水,迅速过掉了这题
…又夺回rank1….后面三个小时我们近乎颓废了….研究了剩下来的题…天哥说第五题还是可做的,然后和天哥研究第五题….天哥想出先求每对点之间的最短路径..然后从最大的边开始删,每次都判断一下。。能删就删掉。。但是那样复杂度太高….想不出复杂度较小的方法…天哥说以前ms写过这样的一个模板…但是怎么都找不到…于是放弃之…转来看F,ACHuntler刚过掉的题
,搞了半天….天哥辛苦的敲了3000+B的代码….最后时刻WA…赛后才发现原来题意理解错了….最终以罚时少rank2…
关于组队:
由于周末要做嵌入式不想奔波于徐汇和奉贤之间…..所以找了大三的组队…感觉除了sh.和天哥谈acm最多了….和师父一起组队….开心…..由于帅哥自费不去…….意外的找了大牛组队…囧……..
大牛:“在我们队你想负责什么?”
我:“DP不行,图论ms做的比较多….”
大牛:”那你去看网络流
,搞搞差分约束吧….”
我:“.……..那要不我
看模拟吧?”
大牛:“那你把三阶魔方还原的程序写了吧”
我:“.………………..”
和二位大牛组队压力ms很大…感觉我很菜……
组队赛ms还有2场?继续加油…..首先别再感冒了……
posted @
2010-04-13 22:24 ccyy 阅读(187) |
评论 (0) |
编辑 收藏