经典面试题:求数组的最大子序列和;实现函数 :判断一个自负喜欢是否是另一个字符串旋转所得;杨氏矩阵中查找一个数。

////求数组(元素可为正数,负数,0)的最大子序列和。
//
//#include
//#include
//
//int get_max_sum(int *arr, int len)
//{
// int max = arr[0];
// int sum = 0;
// while (len--)
// {
// sum += *arr++;
// if (sum >= max)
// max = sum;
// else if (sum < 0)
// sum = 0;
// }
// return max;
//}
//int main()
//{
// int a1[10] = { 1, -8, 6, 3, -1, 5, 7, -2, 0, 1 };
// int a2[8] = { 1, -2, 3, 10, -4, 7, 2, -5 };
// int sum1 = get_max_sum(a1, 10);
// int sum2 = get_max_sum(a2, 8);
// printf("%d\n", sum1);
// printf("%d\n", sum2);
// system("pause");
// return 0;
//}




////编写一个函数判断一个字符串是否为另一个字符串旋转所得,
////比如:“efabcd”是否为“abcdef”旋转所得

//#include
//#include
//#include
//#include
//
//int Is_str(char *p,char *s)//判断s是不是p旋转得到
//{
// assert(p);
// assert(s);
// strncat(p, p, strlen(p));
// if (strstr(p, s) == NULL)
// return 0;
// return 1;
//}
//int main()
//{
// char p[20] = "abcdef";
// char *s = "efabcd";
// int ret = Is_str(p, s);
// if (ret == 1)
// printf("是源字符串旋转得到\n");
// else
// printf("不是源字符串旋转得到\n");
// system("pause");
// return 0;
//}




////杨氏矩阵中查找一个数
////杨氏矩阵的每行每列都是递增的
////时间复杂度可以达到O(M+N) M是行数,N是列数

//#include
//#include
//
//#define M 5
//#define N 4
//int a[M][N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,\
//10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
//
//
//int main()
//{
// int val = 0;
// scanf("%d", &val);
// int i = 0;
// int j = N - 1;
// int flag = 0;
// while (i >= 0 && i < M && j >= 0 && j < N)
// {
// if (a[i][j] == val)
//
// flag = 1; 
// break;
// }
// else if (a[i][j]>val)
// j--;
// else
// i++;
// }
// if (flag==1)
// printf("Yes\n");
// else 
// printf("No\n");
// system("pause");
// return 0;
//}

你可能感兴趣的:(C/C++)