怎样用c语言实现数据的分组与排序?

来源:百度知道 编辑:UC知道 时间:2024/09/24 16:38:46
有1,2,3,4,5,6,7,8,9,10十个数据,要按照每两个数为一组把它们分成五组,然后再把这五个分组进行排序。
排序后的具体要求为,每一组中的两个数所限制的数据不能在与其相邻的下一组出现,当然第五组中的两个数所限制的数据也不能在第一组中出现。例如,1限制2;2限制4、6、7;3限制1、2、7、8;4限制2、3;6限制2、3;7限制3;8限制9、10;9限制6、7、8;10限制3、9。满足这种限制的一种情况是:第一组为(1,8);第二组(3,6);第三组(4,9);第四组(5,10);第五组(2,7)。
请问如何用c语言实现上面的分组与排序,而且要求程序能列出所有满足条件的分组情况。
盼望高手给予解答,不胜感激!
谢谢您的回答,我要补充的是,限制的数据是根据实际情况临时决定的,没有一个固定的公式。

那个限制的策略到底是什么

也就是限制的数据是怎么得来的?

如果知道这个的话

写一个枚举算法的程序就行了

枚举这10个数据所有的组合情况

总的组数为 (C2/10)*(C2/8)*(C2/6)*(C2/4)

一点也不大

然后把每组组合按照条件所要求的限制数据判断一下

如果全都成立 就可以输出

否则就继续下一组