一道程序题,求思路
假设有2500个数据存储单元,形成为50*50的正方形矩阵。每个数据存储单元允许存储2~5个整数,整数范围为1~30,每个整数使用次数不限。50*50数据存储单元如下表形式:
1-11-21-31-4…2-12-22-32-4…3-13-23-33-4…4-14-24-34-4………………其中1-1、1-2等表示存储单元在矩阵中的行列位置,也可以将其作为存储单元的名称。
题目要求:
将1~30的整数按各存储单元的整数个数要求,分配到各数据存储单元中。未按要求分配整数,比赛无成绩,直接出局;每个存储单元内的整数不能相同且不能相邻。如:1和2、2和2、2和3不能出现在同一个存储单元中。如果违反规则,按下述罚则处理:针对每个存储单元都统计一遍,出现一次相同,结果累加100违约分;出现一次相邻,结果累加50违约分;每个存储单元与相邻的存储单元内的整数不能相同且不能相邻。如:第2-2存储单元内的整数与第1-1、1-2、1-3、2-1、2-3、3-1、3-2、3-3存储单元内的整数不能相同且不能相邻。如果违反规则,按下述罚则处理:针对每个存储单元都统计一遍,出现一次相同,结果累加20违约分;出现一次相邻,结果累加10违约分;每个存储单元与相邻存储单元的相邻存储单元内的整数不能相同。如:第2-2存储单元内的整数与第1-4、2-4、3-4、4-1、4-2、4-3、4-4存储单元内的整数不能相同。如果违反规则,按下述罚则处理:针对每个存储单元都统计一遍,出现一次相同,结果累加1违约分;要求:违约分值最低。