软工作业 寻找水王 拓展

一、题目要求

随着Tan-go的发展,发现,“超级水王”没有了。统-计结-果表-明,有3个发帖很多的ID,他们的 数目都超过了 总数目N的1/4。你能从 ID列表中快速找出他们的ID吗?                      

二、设计思想

3个水王,他们 数都超过了总数1/4,每次删去4个不同的id,剩下的一定还是符合3个水王的发-帖数都超过1/4;

找到一个不为0的id保存其位置,然后找到第二个不为0且不与第一个相同的id的位置,依次类推,找到第四个。然后把四个赋值为0.循环执行上面,知道剩余的id都是水王的id为止

三、源代码

#include 
int find(int id[],int length)//把刚才写的封装成一个函数,以便于多次调用
{
    int true1=1;
    int xiaoa=0;
    int xiaob=0;
    int xiaoc=0;
    int xiaod=0;
    int n1=0;
    int n2=0;
    int n3=0;
    int n4=0;
    for(int i=0;i)
    {
        if(id[i]!=0)//不等于0    
        {
            xiaoa=id[i];
            n1=i;
            i=length;
        }
    }
    for(i=0;i)
    {
        if((id[i]!=0)&&(id[i]!=xiaoa))
        {
            xiaob=id[i];
            n2=i;
            i=length;
        }
    }
    for(i=0;i)
    {
        if((id[i]!=0)&&(id[i]!=xiaoa)&&(id[i]!=xiaob))
        {
            xiaoc=id[i];
            n3=i;
            i=length;
        }
    }
    for(i=0;i)
    {
        if((id[i]!=0)&&(id[i]!=xiaoa)&&(id[i]!=xiaob)&&(id[i]!=xiaoc))
        {
            xiaod=id[i];
            n4=i;
            i=length;
        }
    }


    //cout<//让他们都等于0
    //xiaoa=xiaob=xiaoc=xiaod=0;
    id[n1]=id[n2]=id[n3]=id[n4]=0;
    
    return 0;
}
int main(void)
{

    int id[13]={1,2,2,2,2,3,4,3,3,3,4,4,4};
    
    //find(id,13);

    //一直重复上面的函数find代码直到数组里面没有四个不同的为止,也就是只剩下3个水王
    int n;//重复的次数
    int sum;//这个帖子总共有多少条
    cout<<"输入总共总共有多少条:";
    cin>>sum;
    n=sum%3;
    //cout<
    for(int j=0;j)
    {
        find(id,sum);
    }
    //把数组中的重复的水王id去掉

    //循环把所有数组里面不是0的数输出,就是3个水王
    for(int i=0;i<13;i++)
    {
        if(id[i]!=0)
            cout<" ";
    }
    cout<<endl;
    cout<<"结果中只有3个,都是水王的id;这个程序还要优化结果输出,和时间复杂度"<<endl;
    return 0;

}

 

  

四、结果截图

 软工作业 寻找水王 拓展_第1张图片

五、总结

注意求余符号%和整除符号/的区别使用
每一个参数尽量命名合 适,必要的时候加上注释,以便于在编写代码的时候思路清晰,也方便以后查看
代码编写完毕,如果还有想法要 写明,以便于日后查看
每次编写出一个程序都有一种喜人的成就感,好好享受!
尽管水平不高,但一直努力!

转载于:https://www.cnblogs.com/zhaixing/p/4458073.html

你可能感兴趣的:(软工作业 寻找水王 拓展)