求助~~~~~~~~~~~~~~~~~~~~~~~~~~~求助

xiaomailovelvping 2006-12-26 04:39:06
求一个数组中相同数最多的那个数,并把这个数打印出来!例如
(1,2,3,1,4,2,5,4,1,3,1)这个数组就应该打印出1,谢谢各位大侠了~,在线等待!!!!!
...全文
246 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Loongchild 2007-01-01
  • 打赏
  • 举报
回复
int i,j;
int temp1=0,temp2=0,max=0;
for(i=0;i<n-1;i++)
{
for(j=0;j<n;j++)
if(input[i]==input[j])
temp2++;
max = temp2 > temp1 ? i : max ;
if(temp2>n/2)break;
temp1 = temp2;
temp2 = 0;
}
cout<<input[max]<<endl;
asdforever 2006-12-31
  • 打赏
  • 举报
回复
#ifndef DATAARRAY_H
#define DATAARRAY_H

#include<iostream>
using namespace std;

#define N 20
class MyArray{
int *a, *b, *c,*d;
int *ArrayData0;
int *ArrayData1;
int *ArrayData2;
public:
void fordataB();
void listArray();
void reData();
~MyArray();
MyArray();
};
#endif
MyArray::MyArray()
{
a=new int[N];
d=new int[N];
for(int i=0;i<N;i++)
{
a[i]=rand()%N;
d[i]=a[i];
}
}

void MyArray::fordataB()
{
b=new int[N];
c=new int[N];
int count;
for(int j=0;j<N;j++)
{
count=1;
for(int i=j+1;i<N;i++)
{
if(d[j]==d[i])
{
count++;
int m=0;
for(int k=i;k<N-m-1;k++)
{
d[k]=d[k+1];
d[N-m-1]=-1;
m++;
}
}
}
b[j]=count;
c[j]=d[j];
}
}

void MyArray::reData()
{
int count=0;
for(int q=0;q<N;q++)
{
if(d[q]<0)
{
count=q;
break;
}
else
q++;
}
ArrayData0=new int[count];
ArrayData1=new int[count];
ArrayData2=new int[count];
for(int i=0;i<count-1;i++)
{
ArrayData0[i]=d[i];
ArrayData1[i]=b[i];
ArrayData2[i]=c[i];
}
if(d)
delete[] d;
if(b)
delete[] b;
if(c)
delete[] c;
}

void MyArray::listArray()
{
cout<<"原始随机数组:"<<endl;
for(int i=0;i<N;i++)
cout<<a[i]<<",";
cout<<endl;
int count=0;
for(int q=0;q<N;q++)
{
if(d[q]<0)
{
count=q;
break;
}
else
q++;
}
reData();
cout<<"统计后结果:"<<endl;
for(int j=0;j<count-1;j++)
cout<<"数组中的数据:"<<ArrayData2[j]<<" "<<"出现次数:"<<ArrayData1[j]<<";"<<endl;
cout<<endl;
for(int m=0;m<count-1;m++)
cout<<"剩以数组:"<<"ArrayData0["<<m<<"]="<<ArrayData0[m]<<","<<endl;
cout<<endl;
}

MyArray::~MyArray()
{
if(a)
delete[] a;
if(ArrayData0)
delete[] ArrayData0;
if(ArrayData1)
delete[] ArrayData1;
if(ArrayData2)
delete[] ArrayData2;
}

//main();
#include"dataArray.h"

int main()
{
MyArray theArray;
theArray.fordataB();
theArray.listArray();
return 0;
}

//。
Bennyatt 2006-12-31
  • 打赏
  • 举报
回复

一看写代码的活已经没有了
我灌水吧。。。
lei001 2006-12-30
  • 打赏
  • 举报
回复
做个计数,遇到相同的数字则计数加1,最后比较计数的大小,输出计数最大的
DonaldKnuth 2006-12-30
  • 打赏
  • 举报
回复
//用数组下标存储索引,数组值存储频率就可以了
#include <iostream>
using namespace std;

int main()
{
int coll[101];
for(int i=0; i<=100; ++i)
coll[i] = 0;
int value = 0;
int min = 0;
while(value >= 0 && value <= 100)
{
cout<<"输入0到100的元素,其他整型值退出 : ";
cin>>value;
if(value >= 0 && value <= 100)
coll[value] = coll[value] + 1;
}
for(int j=1; j<=100; ++j)
if(coll[min] <= coll[j])
min = j;
cout<<"\n出现最多的元素是:"<<min<<"\n 出现次数为: "<<coll[min]<<endl;

}
ReverseEngineering 2006-12-30
  • 打赏
  • 举报
回复
就是排序
yuanhan530 2006-12-26
  • 打赏
  • 举报
回复
楼上的两位白说了.人家哪里看得懂你们这些.




顺便问下,楼主看得懂吗?
看懂了不要给我分就是了.

可以这样...
用另外一个数组存这个数组中的相同元素的个...再排个序.
Wolf0403 2006-12-26
  • 打赏
  • 举报
回复
先 sort 然后统计,C++ 可以 std::sort,可以比楼上更简单。
taodm 2006-12-26
  • 打赏
  • 举报
回复
先统计各数的计数,然后对计数进行排序。
如果用C++,代码可以很简单
map<int, int> Number2Count;
for (int i = 0; i < ArrayNumer; ++i)
{
++Number2Count[Array[i]];
}
multi_map<int, int> Count2Number;
for (map<int, int>::iterator iter = Number2Count.begin(); iter != Number2Count.end(); ++iter)
{
Count2Number.insert(make_pair(iter->second, iter->first));
}
cout << Count2Number.begin()->second;

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧