寻找水王
一、设计思路
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; }
三、截图
四、总结
这次的寻找水王的编程想法是老师所说的两两抵消,但是我在他的提示下,使用的是两两比较然后计数的思想。遇到的困难就是计数器的位置设置不对,最后
通过不断的草稿纸演算确定。其中的一个收获就是:不用遍历也能实现。