zoukankan      html  css  js  c++  java
  • 寻找水王

    //寻找水王 2016/5/16 Zhangpy
    #include <iostream>
    #include <fstream>
    #include <cstring>
    using namespace std;
    
    int camp(int arr[],int N)
    {
        int i=0,j=0;
        for(;i<N-1;)
            {
                if(arr[i]==arr[i+1])    //抵消形成新数组
                {
                    arr[j]=arr[i];
                    j++;
                }
                i=i+2;
                if(i+1==N)      //奇数
                {
                    arr[j]=arr[i+1];
                    j++;
                }
            }
        cout<<j;      //新数组数目
        if(j==0)
            return arr[0];
        else
            if((N/2)*2!=N)
                camp(arr,j+1);
            else
                camp(arr,j);
    }
    
    int find()
    {
        ifstream in;
        int Data_read[10]={-99999};
        int max[10]={-9999},NUM,N=10;
        in.open("Zhangpy.txt");    
        if(!in)    //打开错误,报错
        {
            cerr<<"open error!"<<endl;
            exit(0);
        }
        for (int i=0; i<N; i++)
        {
            in>>Data_read[i];
            cout<<Data_read[i];
        }
        cout<<endl;
        in.close();
        /**************************************************************************************************
        移位嵌套
        for(;N>1;)
        {
            for(int i=0;i<N-1;)
            {
                if(Data_read[i]==Data_read[i+1])
                {
                    for(int j=i+1;j<N;j++)            
                        Data_read[j]=Data_read[j+1];
                    i=i+1;
                }
                    
                else
                {
                    for(int j=i;j<N;j++)
                        Data_read[j]=Data_read[j+1];
                    i=i+2;
                }    
                    NUM=Data_read[0];
            }
            N=N/2;
        }
        *******************************************************************************************/
       NUM=camp(Data_read,N);
            
        return NUM;
    }
    
    int main()
    {
        int max;
        max=find();
        if(max==-9999)
            cout<<"error!"<<endl;
        else
            cout<<"King_ID is "<<max<<endl;
        return 0;
    }

    思路:

    camp()函数使用递归的方法,现两两想消,由于水王发帖数目超过总数一半,所以两两想消一定可以留下水王,使用递归可以滤出伪水王

    find()函数主要是读取文件内id并调用camp()函数返回king_id

  • 相关阅读:
    2.HTML案例二 头条页面
    1.HTML入门
    33.1.网络编程入门
    32.原子性
    【转】风控中的特征评价指标(一)——IV和WOE
    【转】Python调用C语言动态链接库
    基于蒙特卡洛树搜索(MCTS)的多维可加性指标的异常根因定位
    正则表达式全集
    基于ray的分布式机器学习(二)
    基于ray的分布式机器学习(一)
  • 原文地址:https://www.cnblogs.com/fooreveryu/p/5508667.html
Copyright © 2011-2022 走看看