当前位置:七七学习网文档大全求职指南求职笔试面试笔试题目IT公司笔试常考的算法题» 正文

IT公司笔试常考的算法题

[10-10 21:21:19]   来源:http://www.77xue.com  笔试题目   阅读:8993
概要:Set(iRowNo + 1);Grid[iRowNo][iColNo] = 0;iSumR[iRowNo]--;iSumC[iColNo]--;}}}return iFound; // 用于判断是否有解}int main(int argc, char* argv[]) {if(!Set(0))printf("Failure!");}9、有4种面值的邮票很多枚,这4种邮票面值分别1, 4, 12, 21,现从多张中最多任取5张进行组合,求取出这些邮票的最大连续组合值。(据说是华为20xx年校园招聘笔试题)#define N 5#define M 5int k, Found, Flag[N];int Stamp[M] = {0, 1, 4, 12, 21};// 在剩余张数n中组合出面值和Valueint Combine(int n, int Value) {if(n >= 0 && Value == 0) {Found = 1;int Sum = 0;for(i
IT公司笔试常考的算法题,标签:驾照笔试题目,腾讯笔试题目,http://www.77xue.com

  Set(iRowNo + 1);

  Grid[iRowNo][iColNo] = 0;

  iSumR[iRowNo]--;

  iSumC[iColNo]--;

  }

  }

  }

  return iFound; // 用于判断是否有解

  }

  int main(int argc, char* argv[]) {

  if(!Set(0))

  printf("Failure!");

  }

  9、有4种面值的邮票很多枚,这4种邮票面值分别1, 4, 12, 21,现从多张中最多任取5张进行组合,求取出这些邮票的最大连续组合值。(据说是华为20xx年校园招聘笔试题)

  #define N 5

  #define M 5

  int k, Found, Flag[N];

  int Stamp[M] = {0, 1, 4, 12, 21};

  // 在剩余张数n中组合出面值和Value

  int Combine(int n, int Value) {

  if(n >= 0 && Value == 0) {

  Found = 1;

  int Sum = 0;

  for(int i=0; i

  Sum += Stamp[Flag];

  printf("%d ", Stamp[Flag]);

  }

  printf("\tSum=%d\n\n", Sum);

  }else for(int i=1; i0; i++)

  if(Value-Stamp >= 0) {

  Flag[k++] = i;

  Combine(n-1, Value-Stamp);

  Flag[--k] = 0;

  }

  return Found;

  }

  int main(int argc, char* argv[]) {

  for(int i=1; Combine(N, i); i++, Found=0);

  }

  10、大整数数相乘的问题。(这是20xx年在一考研班上遇到的算法题)

  void Multiple(char A[], char B[], char C[]) {

  int TMP, In=0, LenA=-1, LenB=-1;

  while(A[++LenA] != '\0');

  while(B[++LenB] != '\0');

  int Index, Start = LenA + LenB - 1;

  for(int i=LenB-1; i>=0; i--) {

  Index = Start--;

  if(B != '0') {

  for(int In=0, j=LenA-1; j>=0; j--) {

  TMP = (C[Index]-'0') + (A[j]-'0') * (B - '0') + In;

  C[Index--] = TMP % 10 + '0';

  In = TMP / 10;

  }

  C[Index] = In + '0';

  }

  }

  }

  int main(int argc, char* argv[]) {

  char A[] = "21839244444444448880088888889";

  char B[] = "38888888888899999999999999988";

  char C[sizeof(A) + sizeof(B) - 1];

  for(int k=0; k

  C[k] = '0';

  C[sizeof(C)-1] = '\0';

  Multiple(A, B, C);

  for(int i=0; C != '\0'; i++)

  printf("%c", C);

  }

  11、求最大连续递增数字串(如“ads3sl456789DF3456ld345AA”中的“456789”)

  int GetSubString(char *strSource, char *strResult) {

  int iTmp=0, iHead=0, iMax=0;

  for(int Index=0, iLen=0; strSource[Index]; Index++) {

  if(strSource[Index] >= '0' && strSource[Index] <= '9' &&

  strSource[Index-1] > '0' && strSource[Index] == strSource[Index-1]+1) {

  iLen++; // 连续数字的长度增1

  } else { // 出现字符或不连续数字

  if(iLen > iMax) {

  iMax = iLen; iHead = iTmp;

  }

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9]  下一页


Tag:笔试题目驾照笔试题目,腾讯笔试题目求职指南 - 求职笔试面试 - 笔试题目
联系我们 | 网站地图 | 范文大全 | 管理知识 | 教学教育 | 作文大全 | 语句好词
Copyright http://www.77xue.com--(七七学习网) All Right Reserved.
1 2 3 4 5 6 7 8 9 10