| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 510 人关注过本帖
标题:请教一个归类问题
只看楼主 加入收藏
无名bigmouse
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-16
收藏
 问题点数:0 回复次数:7 
请教一个归类问题

请问各位一个问题:
有以下几组数:
0 5,
1 7,
3 4,
3 6,
5 6,
7 2

请问如何实现归类?即把相关联的数据分在一起
0 3 4 5 6 为一类
1 2 7 为一类
急用!!!请高手能给个c程序,谢谢!

搜索更多相关主题的帖子: 归类 
2006-05-16 18:07
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
为了真正帮助你,请您用自然语言写出算法。
本题好像属于线性代数“置换”群?

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-16 19:30
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 
有点看懂了LZ的意思了
这道题有点离散中的序偶的关系
<a,b>,<b,c>所以<a,c>
所以a,b,c有关系(LZ的意思为同一类)
在这题中可以先确定一个序偶<a,b>,再找其他序偶如果有相同的字母就归到有关系的一类~
具体程序的话还没想好~

很高兴能和大家一起学习程序! QQ:114109098
2006-05-16 19:55
knight110
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-4-13
收藏
得分:0 
支持楼上的,这道题目好像就是离散的吧,

2006-05-16 21:23
TCL
Rank: 1
等 级:新手上路
威 望:1
帖 子:68
专家分:0
注 册:2006-3-28
收藏
得分:0 

离散型?!?!


我要为C语言努力!!!谁都不能挡我!!挡我者。。看你怎样活·····
2006-05-16 22:27
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 
昨晚想了以下程序,但做不出来,看来还要再仔细仔细想想了

很高兴能和大家一起学习程序! QQ:114109098
2006-05-17 10:32
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

#include <stdio.h>
typedef struct
{
int num;
int flag;
int tag;
}tosort;
int n;/*数组个数*/
/*
函数入口:数组,数组中操作数排列号,第几类。
*/
void dosort(tosort *memo,int i,int k)
{
int p,j;
if(i==2*n-1||i==2*n-2)
{
p=i%2?i-1:i+1;
memo[i].flag=memo[p].flag=k;
memo[i].tag=memo[p].tag=1;
}
else
{
p=i%2?i-1:i+1;
memo[i].flag=memo[p].flag=k;
memo[i].tag=memo[p].tag=1;
for(j=0;j<2*n;j++)
{
if(memo[j].tag==1)
continue;
else
if(memo[j].num==memo[i].num||memo[j].num==memo[p].num)
dosort(memo,j,k);
}
}
}
int main()
{
tosort *memo=NULL;
int i,j=1,k=1,m=0,q;
int a[30]={0};
printf("input the number of groups:\n");
scanf("%d",&n);
memo=(tosort *)calloc(2*n,sizeof(tosort));
for(i=0;i<2*n;i++)
{
memo[i].flag=0;
memo[i].tag=0;
}
printf("Now input the numbers:\n");
for(i=0;i<2*n;i++)
scanf("%d",&(memo+i)->num);
for(i=0;i<2*n;i+=2)
{
if(memo[i].tag==1)
continue;
else
dosort(memo,i,k++);
}
while(j<k)
{
for(i=0;i<2*n;i++)
{
if(memo[i].flag==j)
{
if(m)
for(q=0;q<m;q++)
{
if(memo[i].num==a[q])
goto go_on;
}
a[m++]=memo[i].num;
}
if(0) go_on:continue;
}
for(i=0;i<m;i++)
printf("%-6d",a[i]);
printf("\n");
j++;
m=0;
}
free(memo);
getch();

}

一道不错的题,用的却是最垃圾的办法,哎!
再想想有没有好的算法


对不礼貌的女生收钱......
2006-05-17 19:23
无名bigmouse
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-16
收藏
得分:0 
感谢几位,我没学过离散,所以有点难度,若有更好的方法,请告知!


----------------------------------难度不大,实现起来麻烦(feng1256)
2006-05-17 22:42
快速回复:请教一个归类问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024831 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved