1.题目:
三人行设计了一个灌水论坛。随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
2.设计思路:
上一次是运用消消乐的逆向思想消去相邻的两个不同id,这次是寻找三个小水王,它们的id数都超过了总数的四分之一,这次就上次改进一下,把相邻id个数提高一下就可以得出结果。
3.源代码:
1 #include<iostream.h> 2 #include "stdlib.h" 3 int main() 4 { 5 int length; 6 int Idnum[3]={0,0,0}; 7 int ID[3]={0,0,0}; 8 cout<<"请输入总帖子数量:"<<endl; 9 cin>>length; 10 int * curId=new int [length]; 11 cout<<"请输入水军的ID列表"<<endl; 12 for(int j=0;j<length;j++) 13 { 14 cin>>curId[j]; 15 } 16 for(int i=0;i<length;i++) 17 { 18 if(Idnum[0]==0 && curId[i]!=ID[1] && curId[i]!=ID[2]) 19 { 20 Idnum[0]=1; 21 ID[0]=curId[i]; 22 } 23 else if(Idnum[1]==0 && curId[i]!=ID[0] && curId[i]!=ID[2]) 24 { 25 Idnum[1]=1; 26 ID[1]=curId[i]; 27 } 28 else if(Idnum[2]==0 && curId[i]!=ID[0] && curId[i]!=ID[1]) 29 { 30 Idnum[2]=1; 31 ID[2]=curId[i]; 32 } 33 else if(curId[i]!=ID[0] && curId[i]!=ID[1] && curId[i]!=ID[2]) 34 { 35 Idnum[0]--; 36 Idnum[1]--; 37 Idnum[2]--; 38 } 39 else if(curId[i]==ID[0]) 40 { 41 Idnum[0]++; 42 } 43 else if(curId[i]==ID[1]) 44 { 45 Idnum[1]++; 46 } 47 else if(curId[i]==ID[2]) 48 { 49 Idnum[2]++; 50 } 51 } 52 cout<<"三个水桶ID为:"<<ID[0]<<" "<<ID[1]<<" "<<ID[2]<<endl; 53 return 0; 54 }
4.实验结果截图:
5.心得体会:
做了这么多次课堂小程序练习的延伸,每一次都是在第一个程序实现的基础上做改进就可以轻松搞定,相信这种思想在以后的程序编写中会发挥很大的作用吧。
时间: 2024-10-11 06:18:54