首页 > 代码库 > 数据结构算法题-数组字符串

数据结构算法题-数组字符串

1.查找最小的 k 个元素(数组) 题目:输入 n 个整数,输出其中最小的 k 个。
例如输入 1,2,3,4,5,6,7 和 8 这 8 个数字,则最小的 4 个数字为 1,2,3 和 4。

技术分享k_big.c

 

2.查找最小的 k 个元素(数组) 题目:输入 n 个整数,输出其中最小的 k 个。

例如输入 1,2,3,4,5,6,7 和 8 这 8 个数字,则最小的 4 个数字为 1,2,3 和 4

技术分享k_big.c

 

3.判断一个字符串是否对称

技术分享
 1 bool CheckStr(const char* str)
 2 {
 3 int Len = strlen(str);
 4 for (int i = 0; i < Len; ++i)
 5 {
 6     if (*(str + i) != (*(str + (Len - i - 1))))
 7     return false;
 8 }
 9 return true;
10 }
11 
12 int  SymmetricString( const char *ch)
13 {
14     int len=strlen(ch);
15     int i=0,j=len-1;
16     if(len%2!=0) 
17         return 0;
18     for(i=0,j=len-1;i<=len/2;i++,j--)
19     {
20         if(ch[i]!=ch[j]) 
21             return 0;
22     }
23     return 1;
24 }
CheckStr.c

 

4. 题目:定义 Fibonacci 数列如下:
   / 0                  n=0
 f(n)= 1             n=1
 \ f(n-1)+f(n-2)  n=2
输入 n,用最快的方法求该数列的第 n 项。

技术分享
 1 #include <stdio.h>
 2 //递归
 3 int Fibonacci(int n)
 4 {
 5     switch(n)
 6     {
 7     case 0:
 8         return 0;
 9     case 1:
10         return 1;
11     default:
12         return Fibonacci(n - 1) + Fibonacci(n - 2);
13     }
14 }
15 
16 //非递归
17 int nonrecursionFibonacci(int n)
18 {
19     int a = 0, b = 1;
20     int i;
21     switch(n)
22     {
23     case 0:
24         return 0;
25     case 1:
26         return 1;
27     default:
28         {
29             for (i = 0; i < n - 1; i++)
30             {
31                 int c = a + b;
32                 a = b;
33                 b = c;
34             }
35             return b;
36         }
37     }
38 }
39 
40 int main()
41 {
42     int f = Fibonacci(4);
43     int ff = nonrecursionFibonacci(4);
44     printf("%d,%d",f,ff);
45     return 0;
46 }
Fibonacci.c

 

数据结构算法题-数组字符串