zoukankan      html  css  js  c++  java
  • Interview Algorithm

    约瑟夫环:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int find(int *arr, int m, int n);
    
    int main(int argc, char* argv[])
    {
    	int m, n;
    	int index;
    
    	printf("Please input the value of m and n:
    ");
    	fflush(stdout);
    	scanf("%d %d", &m, &n);
    
    	int *arr;
    	arr = (int*)calloc(n, sizeof(int));
    	for (index = 0; index<n; index++)
    	{
    		arr[index] = index+1;
    	}
    	printf("The winner is: %d
    ", find(arr, m, n));
    
    	free(arr);
    	arr = NULL;
    
    	system("pause");
    	return 0;
    }
    
    int find(int *arr, int m, int n)
    {
    	int len = n;
    	int index, step;
    	index = step = 0;
    
    	while(len>1)
    	{
    		if (arr[index] != 0)
    		{
    			++step;
    			if (step == m)
    			{
    				arr[index] = 0;
    				step = 0;
    				len--;
    			}
    		}
    		index = (index+1)%n;
    	}
    
    	for (index = 0; index<n; index++)
    	{
    		if (arr[index] != 0)
    		{
    			return arr[index];
    		}
    	}
    }
    

    将所有的整数放在负数的前面:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int find(int *arr, int m, int n);
    
    int main(int argc, char* argv[])
    {
    	int m, n;
    	int index;
    
    	printf("Please input the value of m and n:
    ");
    	fflush(stdout);
    	scanf("%d %d", &m, &n);
    
    	int *arr;
    	arr = (int*)calloc(n, sizeof(int));
    	for (index = 0; index<n; index++)
    	{
    		arr[index] = index+1;
    	}
    	printf("The winner is: %d
    ", find(arr, m, n));
    
    	free(arr);
    	arr = NULL;
    
    	system("pause");
    	return 0;
    }
    
    int find(int *arr, int m, int n)
    {
    	int len = n;
    	int index, step;
    	index = step = 0;
    
    	while(len>1)
    	{
    		if (arr[index] != 0)
    		{
    			++step;
    			if (step == m)
    			{
    				arr[index] = 0;
    				step = 0;
    				len--;
    			}
    		}
    		index = (index+1)%n;
    	}
    
    	for (index = 0; index<n; index++)
    	{
    		if (arr[index] != 0)
    		{
    			return arr[index];
    		}
    	}
    }
    
  • 相关阅读:
    资源加载相关
    Ubuntu 使用root登陆帐户
    安装zookeeper时,启动成功,可是状态查询未成功
    使用WinSCP远程连接虚拟机
    分布式服务管理框架-Zookeeper客户端zkCli.sh使用详解
    js怎么监听一类标签的点击事件
    js获取select标签选中的值
    学习
    druid
    Linux上非root用户jdk环境变量配置
  • 原文地址:https://www.cnblogs.com/stardujie89/p/4795128.html
Copyright © 2011-2022 走看看