找工作时候一般需要准备的算法题目类型,其实参考leetcode和poj或者剑指offer基本能够摆平大部分的题目了

1.图的遍历,BFS、DFS;

2.递归的回溯剪枝;

3.树的建立和遍历;

4.状态的二进制表示,如一列开关的状态,图某行的开关状态。

数据结构:

1.图的表示:邻接矩阵、邻接表(比如:使用数组表示);

2.队列(BFS用,比如使用数组表示);

3.链表,可使用结构体数组表示;

   POJ上类似难度的题目:1011(DFS+回溯剪枝,地址:http://poj.org/problem?id=1011),

1014(DFS),1256(回溯剪枝),1753(棋盘状态用16位二进制数表示)

2312(图的遍历),2531(DFS),3278(BFS穷举),3984(图的遍历,DFS或BFS)。

如果对解题方法有疑问,可以百度搜索:“poj + 题号”,如“http://www.baidu.com/baidu?wd=POJ+1011”。

1.穷举法题目例子

首先这个题目是找到方阵中,step = n的特定环的最大值:

只要穷举法就ok,写这个题目需要回顾两点,1,模仿poj的标准输入输出。2.二维数组传值,需要降维,这块下标的计算

样例输入:

2
4 3
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
3 3
0 0 0
0 0 0
0 0 0

输出:

92
0
// KDonuts.cpp : 定义控制台应用程序的入口点。
// #include <stdio.h>
#include <malloc.h> /* To read numbers int n;
while(scanf("%d", &n) != EOF)
{
  ...
} To read characters int c;
while ((c = getchar()) != EOF)
{
...
} To read lines
char line[1024];
while(gets(line))
{
...
}
*////// //只是从当前x,y 坐标的一个环的sum
int getSum(int startX,int startY,int* array,int step,int nlength)
{
int sum = 0; for (int i = startY;i < startY+step;i++)
{
sum = sum + *(array + startX*nlength + i);
sum = sum + *(array + (startX +step-1)*nlength +i);
} for (int j = startX; j< startX +step - 2;j++)
{
sum = sum + *(array+(j +1)*nlength + startY);
sum = sum + *(array+(j +1)*nlength+ startY + step -1);
} return sum;
} int getMax(int nlength,int step,int* array )
{
int maxsum = 0; for (int i = 0;i<=nlength-step;i++)
{ for (int j = 0;j<=nlength-step;j++)
{
int tmp = getSum(i,j,array,step,nlength);
if (maxsum<tmp)
{
maxsum = tmp;
}
}
}
return maxsum;
} int main()
{ freopen("sample.in", "r", stdin);
freopen("sample.out", "w", stdout); /* 同控制台输入输出 */ int mainIndex = 0;
scanf("%d",&mainIndex); for (int i = 0; i < mainIndex;i++)
{
int step = 0;
int N = 0;
scanf("%d %d",&N,&step);
// 下面申请内存时候要用sizeof不然free时候会算错导致堆出错
int *array = (int*)malloc(sizeof(int)*N*N);
for (int j = 0;j<N*N;j++)
{
scanf("%d",array+j);
}
printf("%d\n",getMax(N,step,array)); free(array);
} fclose(stdin);
fclose(stdout); return 0;
}

2.各大公司最常考的题目:关于单链表的逆置

// LinkListReverse.cpp : 定义控制台应用程序的入口点。
// #include<stdio.h>
//#include<stdlib.h>
#include <malloc.h>
/*链表节点定义*/
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode, *LinkList; //定义节点,头指针类型名 /*尾插法创建单链表*/
void Create_LinkList_B(LinkList &L)
{
int x, cycle = 1;
Lnode *p, *s;
L=(LinkList)malloc(sizeof(Lnode)); //生成头结点
L->next = NULL;
p=L;
while(cycle) //循环接受输入节点数据,-1结束输入
{
printf("x = ?\n");
scanf("%d", &x);
if(x != -1)
{
s=(Lnode *)malloc(sizeof(Lnode)); //生成新节点
s->data = x;
p->next = s; //把新节点插入链表尾部
p = s; //p指针再次指向尾节点
}
else
{
cycle = 0; //输入-1,改变循环变量,不接受新节点
} }
p->next = NULL;
} /*单链表的逆置,针对有头节点的情况 ,没有头节点的情况另外补上一个头结点*/
void Reverse_LinkList(LinkList &L)
{
if( (NULL==L)||(NULL==L->next) )return ; //边界检测
Lnode *pre, *q;//pre节点一直作为去掉头结点的链表的首节点,q作为保存pre的临时节点
pre = L->next; //P指向链表第一个元素
L->next = NULL; //断开头结点与链表
while(pre != NULL)
{
q = pre;
pre = pre->next;
q->next = L->next; //相当于前插法构建新的链表,和原来的相反
L->next = q;
}
}
//单链表逆置的递归写法:
void ReverseList(LinkList& pCur,LinkList& ListHead)
{
if( (NULL==pCur)||(NULL==pCur->next) )
{
ListHead=pCur;
}
else
{
LinkList pNext=pCur->next;
ReverseList(pNext,ListHead); //递归逆置后继结点
pNext->next=pCur; //将后继结点指向当前结点。
pCur->next=NULL;
}
} /*打印单链表*/
void Print_LinkList(LinkList &L)
{
Lnode* p;
p = L->next; //L是头指针,p指向第一个节点,开始打印
while(p != NULL)
{
printf("%d\n", p->data);
p = p->next;
}
} /*测试函数*/
int main()
{
LinkList H; //声明头指针
Create_LinkList_B(H);
printf("现在开始打印链表\n");
Print_LinkList(H); printf("-----逆置之后的链表-----\n"); Reverse_LinkList(H);
Print_LinkList(H);
printf("-----逆置之后的链表-----\n");
ReverseList(H,H);
Print_LinkList(H);
return 0;
}

这个哥们的代码基本可以作为标准答案了:

http://blog.csdn.net/heyabo/article/details/7610732

【编程练习】最近准备开始找工作,这篇文章作为一个code练手题目的总结吧的更多相关文章

  1. 找工作笔试面试那些事儿(8)---常问的CC++基础题

    这一部分是C/C++程序员在面试的时候会被问到的一些题目的汇总.来源于基本笔试面试书籍,可能有一部分题比较老,但是这也算是基础中的基础,就归纳归纳放上来了.大牛们看到一笑而过就好,普通人看看要是能补上 ...

  2. IT行业歧视40岁以上人群为找工作还要谎报年龄[转]

    IT行业歧视40岁以上人群为找工作还要谎报年龄(这样不好) http://www.aliyun.com/zixun/content/2_6_616161.html [赛迪网讯]4月5日消息,许多40多 ...

  3. java自学找工作经历

    断断续续的,折腾了7个多月,学完了在网上购买的培训机构J2EE的全套课程.期间各种蛋疼看另一篇博客 http://www.cnblogs.com/work396/p/6791488.html 直接说找 ...

  4. Java自学如何找工作

    今天聊一下可能大多数人都关注的问题“自学Java如何找工作”那么首先你就要明确现在招聘Java开发的基本要求是什么?下面我们来看一下招聘网站上面的要求,在这里我只随便找了一个比较全面的要求,自己可以去 ...

  5. [找工作] 2019秋招|从春招到秋招,Java岗经验总结(收获AT)

    转自(有更多) https://blog.csdn.net/zj15527620802/article/month/2018/10 前言 找工作是一件辛酸而又难忘的历程.经历过焦虑.等待.希望,我们最 ...

  6. 一个Android开发妹子的找工作心酸史

    阿里:实习二面被KO 1,人生接到的第一个电话面试来自大家都说好的阿里,心情激动,说话颤抖,本以为没有戏,然而第二天接到了二面的电话有点小激动.然后就是被ko了,死的原因很简单,那时候单纯的自己什么都 ...

  7. 【招聘】滴滴滴~ i春秋内推直通车来咯,帮你找工作!

    凑是这么简单粗暴,i春秋冬日特享福利!虽然金九银十已经过去,但素想换工作想找工作的小哥哥小姐姐看过来! [职位方向]渗 透 测 试.代 码 审 计.安全开发.病毒分析.风险控制.安全运维.....任何 ...

  8. 如何正确学习web前端流程以及如何找工作

    解释一下web前端工作是做啥的,Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript/Flash等各种Web技术进行客户端产品的开发.完成客户端程序(也就是浏览器端)的开发 ...

  9. 苦逼三流小公司程序员这半年找工作经历(3)——选择offer

    本文按照企业规模.性质.规模,分成三类,点评一下遇到的这些公司.也算是为半年找工作经历的一个总结. 1,三流小公司 公司规模类似于笔者跳槽前所在企业,性质有外商独资.合资,当然大多数都是民营企业,规模 ...

随机推荐

  1. 洛谷P2319 [HNOI2006]超级英雄

    一开始是用二分图匹配(网络流)+二分做的,后来发现直接用匈牙利更简单 #include<cstdio> #include<cstdlib> #include<algori ...

  2. java 实现WebService

    1.xml    2.    wsdl: webservice description language web服务描述语言        通过xml格式说明调用的地址方法如何调用,可以看错webse ...

  3. widows下的进程与服务

    进程: 当程序卡死的时候,我们可以直接通过任务管理器来关闭进程. 服务: 在这个界面,我们可以选择启动或者关闭相关服务,还可以选择服务是否自动启动. 以关闭MySQL自启动服务为例:https://j ...

  4. 携程Java后台开发三面面经

    前言 携程是我面试的第一个互联网公司,投递的岗位是后台开发实习生,总共面了三面,止步于人才库.中间兜兜转转,复杂的心理活动,不足与外人道也.唯有面试的技术部分与大家共享. 宣讲会完了之后有个手写代码的 ...

  5. kibana使用

    最近,被老大叫写一个kibana的使用方法给所有人用. 注意的一点: 能不用空格表示OR或者AND就不用空格表示,因为要么全用要么全部不用,否则会因为解析搜索同级的时候,若出现空格和OR,会冲突覆盖意 ...

  6. JPA 的 CascadeType 属性 和 FetchType属性 和 各种映射关系

    代码地址:https://gitee.com/a247292980/lgp20151222 CascadeType CascadeType.PERSIST级联新增(又称级联保存): CascadeTy ...

  7. 聪明的搜索算法’ A*算法

    A*算法     是一种启发式的搜索算法. 了解BFS.DFS或者Dijkstra算法的人应该知道.这些算法都是一种向四周盲目式搜索的方法.   启发式搜索:     启发式搜索就是在状态空间中的搜索 ...

  8. iOS开发-文件管理

    iOS学习笔记(十七)--文件操作(NSFileManager) 浅析 RunLoop 解决EXC_BAD_ACCESS错误的一种方法--NSZombieEnabled iOS开发--Swift篇&a ...

  9. /usr,/usr/local/ 还是 /opt ?

    Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的(好吧处女座表示完全不能接受不正确的路径选择,看着会不舒服的……) /usr:系统级的目录,可以理解为C:/Windows/, ...

  10. HTML DOM 改变 HTML 内容

    HTML DOM 允许 JavaScript 改变 HTML 元素的内容. 改变 HTML 输出流 JavaScript 能够创建动态的 HTML 内容: 今天的日期是: Thu Feb 25 201 ...