C language interview algorithm question (1)

Source: Internet
Author: User

1. Evaluate the combination number: Calculate the combination of k numbers in the n number (1... n ....
For example, combination (5, 3)
Required output: 543,542,541,532,531,521,432,431,421,321,

/*
Evaluate the combination number: Calculate the combination of k numbers in the n number (1... n ....
For example, combination (5, 3)
Required output: 543,542,541,532,531,521,432,431,421,321,
*/
# Include <stdio. h>
# Include <error. h>
Int pop (int *);
Int push (int );
Void combination (int, int );

int stack[3]={0};
int top = -1;

int main()
{
  int n,m;
    n = 5;
    m = 3;
  combination(n,m);
  printf("\n");
}

void combination(int m,int n)
{
  int temp = m;
  push(temp);
  while(1)
  {
    if(1==temp)
    {
      if(pop(&temp) && stack[0]==n)
        break;
    }
    else if(push(--temp))
    {
      printf("%d%d%d\n",stack[0],stack[1],stack[2]);
      pop(&temp);
    }
  }
}

int push(int i)
{
  stack[++top]=i;
  if(top<2)
    return 0;
  else
    return 1;
}

int pop(int *i)
{
  *i = stack[top--];
  if(top>=0)
    return 0;
  else
    return 1;
}

2. Use a pointer to display the "ABCD1234efgh" character string

#include <stdio.h>
#include <string.h>
int main()
{
  char str[]="ABCD123efgh";
  int length = strlen(str);
  char *p1= str;
  char *p2 = str+length -1;
  while(p1<p2)
  {
    char c = *p1;
    *p1 = *p2;
    *p2 = c;
    ++p1;
    --p2;
  }
  printf("str now is %s\n",str);
  return 1;
}

3. Specify the strings A and B, and output the maximum public substrings in A and B. For example, if A = "aocdfe" B = "pmcdfa", "cdf" is output"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *commanstring(char shortstring[],char longstring[])
{
  int i,j;
  char *substring = malloc(256);
  if(strstr(longstring,shortstring)!=NULL)
    return shortstring;
  for(i=strlen(shortstring)-1;i>0;i--)
  {
    for(j=0;j<=strlen(shortstring)-i;j++)
    {
      memcpy(substring,&shortstring[j],i);
    substring[i]='\0';
    if(strstr(longstring,substring)!=NULL)
      return substring;
    }
  }
  return NULL;
}

void main(void)
{
  char *str1 = "aocdfe";
  char *str2 = "pmcdfa";
  char *comman = NULL;
  if(strlen(str1)>strlen(str2))
    comman= commanstring(str2,str1);
  else
    comman = commanstring(str1,str2);
  printf("the longest comman string is:%s\n",comman);
  
 }

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.