有一个数组char point[15],15个位置中的每一个位置的取值范围为0-8;其中8可代替0-7中的任何一个.
现把15个位置分成9组,一组为五个元素;分法为:
第一组:5,6,7,8,9(数组下标,如9即为point[9]);
第二组:0,1,2,3,4,;
第三组:10,11,12,13,14;
第四组:0,6,12,8,4;
第五组:10,6,2,8,14;
第六组:0,1,7,3,4;
第七组:10,11,7,13,14;
第八组:5,11,12,13,9;
第九组:5,1,2,3,9
名词说明:连线:即一组中有至少三个连续的相同的元素,注意8是可代替0-8中的任何数的,例如一组中有;1,1,8,5,6,那个这组就是存在一个1的三连线1,1,8
要求写一个函数:
输入为:1)要产生连线的长度数组指针*plen;2)各个长度连线的相应值数组指针*pdata;
输出为:point[15]数组
例如要产生3条连线,长度分别为len[0] = 3,len[1] = 4,len[2] = 5,对应的数值为data[0]=0,data[1]=4,data[2]=6,那么就把len和data传进该函数,
然后函数运算输出point[15]的15个值;
备注:1)以最长命名;例如1,1,1,1,1这就是一个1的5连线,不存在1的3连线
2)一组中允许有1个以上的连线:例如1,1,8,2,2;里面就有两个连线
3)没有要求产生的连线,里面是绝对不能有的.例如要生成有两条连线的15个数字,那么这两个连线是9条线的其中任意两条;剩余的7条线就不能有任何连线的存在了
4)一组是5个元素,连线必须有个元素是第一或第五个,即要连首或尾才算是连线
5)5个8连线时,8不可变,只能是自己,所以只是一个8的5连线
6)限定最多只能同时出现5条连线
7) 最多只能同时有2条5两线。最多只能同时有2条4两线,3连线不限
8) 可以输入一共产生n条连线,并且n条连线长度一样,数值一样
9) 5连线及以上不可出现8的连线,但是其他的连线可以包括8
10)允许相同的输入
要求:
1)用c语言编写,提供源码,并验证可行。
2)运算时间尽量短。
3)提供验证函数,提供源码。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课