寻找水王

一、设计思路

1、我采用的方法是两两计算抵消的想法,相邻的两个ID依次比较。

2、计数器用来表示水王出现的次数。默认当计数器为0时,水王就是当前的ID,因此水王出现一次,计数器从0加1,然后比较后一个ID,如果相同,意味着水王又出现一次,计数器就自加1;如果不同,意味着水王没有出现第二次,直接抵消,计数器就减1。当计数器为0,水王又是当前ID,依次循环。

二、代码

//2016/5/18 信1301-1 黄山成 20133048 寻找水贴王的ID
#include<iostream>
using namespace std;
#include<string>

  //通过两两抵消用来找出水王的函数
void King(string shui_ID[],int amount_ID)  
{  
    string king;  
    int i=0;  
    int counts=0;
   
    for( i=0;i<amount_ID;i++)  
    {  
        if(counts ==0 )  
        {  
            king = shui_ID[i];  
            counts = 1;  
        }  
        else  
        {  
            if(king==shui_ID[i])  //判断当前的ID是否和后一个相同
            {
                counts ++;
            }
            else  
            { 
                counts --; 
            }
        }  
    }  
    cout<< king;  
}  
int main()  
{  
    string ID[10] = {"波风水门","我是冠军","双杰伦","666666一水到底","666666一水到底","蜡笔小新心","666666一水到底","666666一水到底","666666一水到底","666666一水到底"};  
    cout<<"ID: "<<endl;
    for(int i=0;i<10;i++)
    {
        cout<<ID[i]<<endl;
    }
    cout<<"The king of shui is:"<<" ";
    King(ID,10);  
    cout<<endl;
    return 0;  
}  

三、截图

四、总结

这次的寻找水王的编程想法是老师所说的两两抵消,但是我在他的提示下,使用的是两两比较然后计数的思想。遇到的困难就是计数器的位置设置不对,最后

通过不断的草稿纸演算确定。其中的一个收获就是:不用遍历也能实现。

posted @ 2016-05-18 22:20  SurverDevin  阅读(171)  评论(0编辑  收藏  举报