部分IT公司的筆試小演算法題精選

2021-09-08 07:37:23 字數 2911 閱讀 2079

1、將一整數逆序後放入一陣列中(要求遞迴實現)

void convert(

int*result,

int n)

int main(

int argc,

char

* ar**)

;convert(result, n)

;printf

("%d:"

, n)

;for

(int i=0; i<9; i++)

printf

("%d"

, result[i]);

}

2、求高於平均分的學生學號及成績(學號和成績人工輸入)

double find(int total, int n) else else ;

if(n>0 && strlen(source)>0 && n<=strlen(source))

find(source, result, 3);

5、分解成質因數(如435234=251*17*17*3*2,據說是華為筆試題)

void prim(int m, int n) ;

int v[4] = ;          

char maze[max_size][max_size] = ,,,

,,,,

};void findpath(int x, int y) else for(int k = 0; k < 4; k++)

if(x >= 0 && y >= 0 && y < max_size && x < max_size && 'o' == maze[x][y]) ;           // 各行黑點數和的情況

int ipointsc[cols] = ;        // 各列黑點數和的情況

int icount, ifound;

int isumr[rows], isumc[cols], grid[rows][cols];

int set(int irowno) else else if(grid[irowno][icolno]==0) ;

// 在剩餘張數n中組合出面值和value

int combine(int n, int value) else for(int i=1; i0; i++)

if(value-stamp[i] >= 0) else ,       // 行號:任務序號,列號:工人序號

,       // 每行元素值表示這個任務由不同工人完成所需要的時間,};

int mincost=1000;

int task[n], temptask[n], worker[n];

void assign(int k, int cost) else else ; 

// 尋找最佳過橋方案。remnant:未過橋人數; curtime:當前已用時間;

// direction:過橋方向,1--向右,0--向左

void find(int remnant, int curtime, int direction) else if(direction == 1) else else if(str[j]!='*') node;

node *create(int n) ;

show(list, n);                            // 輸出排序前序列

qsort(list, 0, n-1);                      // 快速排序

show(list, n);                            // 輸出排序後序列

21、2023年11月23日慧通筆試題:寫一函式判斷某個整數是否為回文數,如12321為回文數。可以用判斷入棧和出棧是否相同來實現(略微複雜些),這裡是將整數逆序後形成另一整數,判斷兩個整數是否相等來實現的。

#include "stdafx.h"

int isechonum(int num) node;

node *create(int n) {                 // 建立單鏈表,n為節點個數

node *p = (node *)malloc(sizeof(node));  

node *head = p;    head->data = 'a';

for(int i='b'; i<'a'+n; i++) {

p = (p->next = (node *)malloc(sizeof(node)));

p->data = i;

p->next = null;

return head;

void addcircle(node *head, int n) {  // 增加環,將鏈尾指向鏈中第n個節點

node *q, *p = head;

for(int i=1; p->next; i++) {

if(i==n) q = p;

p = p->next;

p->next = q;

int iscircle(node *head) {           // 這是筆試時需要寫的最主要函式,其他函式可以不寫

node *p=head,*q=head;

while( p->next && q->next) {

p = p->next;

if (null == (q=q->next->next))   return 0;

if (p == q)   return 1;

return 0;

int main(int argc, char* ar**) {

node *head = create(12);

addcircle(head, 8);              // 注釋掉此行,連表就沒有環了

printf("%d\n", iscircle(head));

IT公司筆試題演算法部分(三)

20 快速排序 東軟喜歡考類似的演算法填空題,又如堆排序的演算法等 include stdafx.h define n 10 intpart int list,int low,int high 一趟排序,返回分割點位置 list low tmp return low void qsort int l...

筆試演算法題公司真題記錄

快手2020春招第一題 整數n劃分為k份,求k個數字的最大乘積 例如 整數7分3份 最大2 2 3 12 思路 均值不等式 ab 1 2 a 2 b 2 a和b相等時乘積最大 n,k int i for i in input split a為每份平均數字,b為最後的餘數 a n k b n k su...

演算法題之路 網易 小易回公司 最快時間

終於到週末啦!小易走在市區的街道上準備找朋友聚會,突然伺服器發來警報,小易需要立即回公司修復這個緊急bug。假設市區是乙個無限大的區域,每條街道假設座標是 x,y 小易當前在 0,0 街道,辦公室在 gx,gy 街道上。小易周圍有多個計程車打車點,小易趕去辦公室有兩種選擇,一種就是走路去公司,另外一...