ccyy's coding zone
往前走,不要留恋路边的风景.
posts - 25,comments - 9,trackbacks - 0

8.3

   这几天等ms通知中在家没啥事只好yy C++builder....家里还是比较爽啊..就是没有网很多东西都不能查..只好自己YY…..

   这几天熟悉了一下C++ builder..把下好的一堆教程拿出来看….发现只有一个还比较实用…..YY…..把万老师的程序翻出来研究自己先搭了一个简单界面我负责的是编辑功能..然后把万老师的文档拿出来看..发现编辑功能是最繁琐的- -||….有很多疑问啊

   比如C++builder定义了很多类如Tlist,AnsiString,SetCstring之类的在这里还能用吗,C++builderms还有自己的一套语法?比如..现在只是搭了一个框架,一些控件的消息响应函数应该怎么加进去呢....C++builder是不是还有自己的一堆函数库,结构,TbitmapC++builder里面的图像的结构体吗,Tform又是啥??很多都不知道

   下一步:先学下语法再熟悉下如何制作工具栏之类的….然后继续研究万老师代码奇怪的是万老师的代码运行出来为什么没有界面呢

8.7

  Builder玩了几天….比较熟悉了..但是不能上网..很多问题还不明白比如说TForm的响应函数FormPaint是怎么产生的还是不知道随便乱点只产生FormCreate函数…FormPaintFormCreate的区别….还有为什么我建的工程里面加的控件,在对象检查窗口里面的颜色比较淡….感觉不太正常好像…..大概把握了一下对于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 阅读(692) | 评论 (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 阅读(419) | 评论 (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 阅读(190) | 评论 (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 阅读(151) | 评论 (0)编辑 收藏
       终于把《哈利波特与死亡圣器》看完了..头脑还处于兴奋状态...哈利波特还是如此令我着迷...哈利波特可以说陪我度过了初中,高中的时光...还记得以前新华书店里一边听着书店里放的《go home》一边津津有味的沉浸在哈利波特中....日子真是无忧无虑..当时特别向往JK.罗琳所描又述出来的魔方学校霍格沃茨...真的是一个既虚幻又真实而又有趣的世界..每个巫师有都特制的魔杖...画框里面的人都会说话还有思想..学校里有各种有趣的东西.比如说分院帽,哈利神奇的隐形衣。。各种有趣的课程,魔药课,黑魔法防御术..里面还有相当于政府部门的魔法部。。相当于银行的古灵阁(由妖精看守的)...相当于死牢的阿兹卡班(由恐怖的摄魂怪看守)...有了魔杖,很多事情好像念念咒语就可以轻松解决..还可以幻影移形..多好玩....还有魁地奇这种类似与现实生活中世界杯的活动..不过比世界杯ms好玩多了..运动员都骑在扫帚上飞来飞去...总之这是一个罗琳YY出来的世界..并且还可以自圆其说.
       JK.罗琳真的是个了不起的作家...感觉整个哈利波特的故事的情节跌宕起伏,环环相扣,而且前呼后应...最后一本书写的东西好像在第一本已经埋下伏笔了...每次读哈利波特都让我爱不释手..总是一拿起来就不愿放下..而且每个人物都塑造的非常鲜活...总感觉都能想象出每个人物的样子..勇敢的哈利.聪明,成绩好的不得了的赫敏.格兰杰...搞笑的双胞胎兄弟..慈祥而且睿智的邓布利多...大大咧咧的海格..愚钝但是充满正义感的挪威.隆巴顿...有点神经质的卢娜.洛夫古德..骄傲冷漠的德拉科.马尔福..没有一个人物不是活灵活现...
       据说JK.罗琳原来是个单身母亲...为了写哈利.波特..每天到一个咖啡馆区.把哈利波特的故事写在小纸片上...功夫不负有心人。。哈利.波特给他带来了巨大的财富..更给了我们一个奇特的想象空间... 
       看完了哈利波特..有好多值得回味的地方..如邓布利多精心的策划安排..比如阿兹卡班囚徒中时间倒转的机器...火焰杯中的三强争霸赛的阴谋...寻找魂器的艰辛探索过程..也有许多感人的场面..例如小精灵多比为了救哈利.波特而牺牲...小天狼星的殉职..
      告一段落..最近堕落了..都沉浸在魔幻世界中.....该干点正事了..睡觉去..
   
posted @ 2010-07-26 03:18 ccyy 阅读(212) | 评论 (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 阅读(216) | 评论 (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 阅读(105) | 评论 (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 阅读(181) | 评论 (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 阅读(757) | 评论 (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 阅读(178) | 评论 (0)编辑 收藏
仅列出标题
共3页: 1 2 3