• 第一个只出现一次的字符,josephus环,最大子数组和


    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define MAXINT 0x7fffffff
    #define MININT 0X80000000
    //字符串中第一个只出现一次的字符
    char firstSingle(char *str)
    {
    	int a[255];
    	memset(a, 0, 255 * sizeof(int));
    	char *p = str;
    	while (*p != ''){
    		++a[*p];
    		++p;
    	}
    	p = str;
    	while (*p != ''){
    		if (a[*p] == 1) return *p;
    		++p;
    	}
    	return '';
    }
    //josephus问题 f(n,m)=(f(n-1,m)+m)%n,迭代求解最后一个数的原始数
    int joseph(int n, int m)
    {
    	int fn = 0;
    	for (int i = 2; i <= n; ++i)
    		fn = (fn + m) % i;
    	return fn;
    }
    
    //最大子数组和
    int maxSubArraySum(int *a, int n, int &b, int &e)
    {
    	int p, sum, maxSum;
    	p = sum = 0;
    	maxSum = MININT;
    	for (int i = 0; i < n; ++i){
    		if (sum < 0){
    			sum = a[i];
    			p = i;
    		}
    		else sum += a[i];
    		if (sum > maxSum){
    			maxSum = sum;
    			b = p;
    			e = i;
    		}
    	}
    	return maxSum;
    }
    int main()
    {
    	char str[] = "abaccdeff";
    	printf("%c
    ", firstSingle(str));
    	printf("%d
    ", joseph(5, 3));
    	int a[] = { 13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7 };
    	int len, b, e;
    	len = maxSubArraySum(a, 16, b, e);
    	printf("the maxSubArray is :
    ");
    	for (int i = b; i <= e; ++i)
    		printf("%d	", a[i]);
    	printf("
    the maxSubArraySum is : %d
    ", len);
    }
    

      

  • 相关阅读:
    pm2部署node应用
    koa源码分析
    将vim配置成一个轻量的IDE开发工具
    私有npm下载资源
    nodejs的会话总结
    redis---安全设置
    Lua----注意事项
    Leetcode538.-Convert BST to Greater Tree-Easy
    Leetcode 230-Kth Smallest Element in a BST-Medium
    Leetcode669-Trim a Binary Search Tree-Easy
  • 原文地址:https://www.cnblogs.com/jokoz/p/4693644.html
Copyright © 2020-2023  润新知