手游大话西游官网礼包:请教C语言编程高手

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 00:37:47
请教C语言编程高手
悬赏分:0 - 解决时间:2005-12-10 13:19
先谢谢了。
我想实现下列编程:例如,想把
1,2,3,7,8,4,9,20,14,
4,7,3,9,15,20,6,18,9,
1,5,8,3,7,12,14,15,17,
2,3,8,9,10,11,13,14,16,
。。。。。。。。。。(假设下面还有,此处省略)
。。。。。。。。。。(每列都是9个数)

这些数重复的找出来,并且按出现次数多少排列出来,如
3,4次
7,3次
8,3次等等
请用C语言编写程序
下面是一个答案,大家看看可行否?不完善的地方可以改一下。
int A[Row][Col];//Col and Row是常数 Col=9
int a=Row,b=Col;
int *temp=new int[a*b];
int *num=new int[a*b];

for(int i=0;i<a*b;i++)
{
num[i]=0;
}
int c=0;
for(i=0;i<Row;i++)
{
for(int j=0;j<Col;j++) //双重循环完成大数组搜数
{
for(int k=0;k<=c;k++)//判断
{
if(temp[k]==A[i][j]) //临时数组有,则加1
num[k]=num[k]+1;
else
{
temp[c]=A[i][j]; //没有则添加到数组.
num[c]=num[c]+1;
c++;
}

}
}
}

应该是正确的,不过好像没有排序过程??
还有一点问题你在Temp当中查数的时候应该要考虑运行效率的问题
你使用的逐一比较法时间复杂度是O(n)
建议你使用哈希表,如果你不会哈希的话可以去搜一搜,网上到处都是,很简单的。。。。。。

我认为可以

还行。