寻找水王

//寻找水王 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

 

posted on 2016-05-19 14:52  foorever_宇  阅读(126)  评论(0)    收藏  举报

导航