• 寻找三小水王


    一、设计思路

    在上次的基础上,将计数器增加到三个,每一个计数器计数一个水王,并用三个变量标记三个水王。因此每一次都要三个ID三个ID的判断,如果有上一次的水王,那么上一次的

    水王出现次数加一,如果都没有出现,那么上次出现的水王次数减一。

    二、代码

      

    //Fing the three kings of shui,the amount of every king is at least 1/3 of sum. 20133048 黄山成 2016/5/27 
    #include<iostream>
    using namespace std;
    
    void Find_King(int shui_ID[],int amount_ID)//寻找水王
    {
    	int king_1=0,king_2=0,king_3=0;//三个水王变量
    	int Counts_1=0,Counts_2=0,Counts_3=0;//没一个计数器用来计数三个水王的出现次数
    	int i=0;
    	for(i=0;i<amount_ID;i++)
    	{
    
            if(Counts_1==0 && shui_ID[i]!=king_2 && shui_ID[i]!=king_3)//第一个水王的默认ID
            {
                Counts_1=1;
                king_1=shui_ID[i];//第一个水王出现一次
            }
    		else if(Counts_2==0 &&shui_ID[i]!=king_1 && shui_ID[i]!=king_3)//第二个水王的默认ID
            {
                Counts_2=1;
                king_2=shui_ID[i];
            }
            else if(Counts_3==0 &&shui_ID[i]!=king_1 && shui_ID[i]!=king_2)//第三个水王的默认ID
            {
                Counts_3=1;
                king_3=shui_ID[i];
            }
            else if(shui_ID[i]!=king_1 && shui_ID[i]!=king_2 && shui_ID[i]!=king_3)//如果下面三个ID都不是上面三个标记的水王id,那么意味着水王没有出现,出现次数减一
            {
                Counts_1--;
                Counts_2--;
                Counts_3--;
            }
            else if(shui_ID[i]==king_1)//第一个水王又出现一次,出现次数加一
            {
                Counts_1++;
            }
            else if(shui_ID[i]==king_2)
            {
                Counts_2++;
            }
            else if(shui_ID[i]==king_3)
            {
                Counts_3++;
            }       
    	}
    	cout<<king_1<<" "<<king_2<<" "<<king_3<<endl;
    
    }
    
    int main()
    {
    	int ID[10]={123,243,323,123,323,243,323,243,123,4123};
        //string ID[10] = {"波风水门","MVP","波风水门","波风水门","666666一水到底","MVP","要火火","MVP","666666一水到底","666666一水到底"};  
        cout<<"ID: "<<endl;
        for(int i=0;i<10;i++)
        {
            cout<<ID[i]<<" ";
        }
    	cout<<endl;
    
        cout<<"The small kings of shui are:"<<" "<<endl;
        Find_King(ID,10);  
        
    	return 0;
    }
    

      

      三、截图

    四、总结

    这次的寻找小水王,思想和上次相同,但是需要增加到三个计数器,不过代码没有实现string 类型的ID,直接用的是int型。

  • 相关阅读:
    [洛谷P4585] [FJOI2015] 火星商店问题
    [bzoj4311] 向量
    [bzoj4977] [Lydsy1708月赛] 跳伞求生
    sdut-1153 C语言实验——求两个整数之中较大者
    sdut_1116
    sdut_1189
    汉诺塔
    二分查找
    类似二分查找算法
    [YTU]_2922(Shape系列-8)
  • 原文地址:https://www.cnblogs.com/surver/p/5534202.html
Copyright © 2020-2023  润新知