我有 array[110] 填充了整数(行)位(只有 1 和 0),我需要通过输出将它划分为少 7 行位并重复跳过,从某个(标记为数字 2 的下一个幂)开始数组 [110] 的索引到此数组 [110] 的末尾。
现在通过7个不同的行(组,数组)我的意思是位的行,从索引是数字2的下一个幂的位开始,所以:1,2,4,8,16,32 ...也在下一行(组),值必须被输出并被索引的数量跳过,这是数组中数字 2 的下一个幂。因此,例如输出 4,跳过 4... 或输出 8,跳过 8,等等到最后一组,其中数组中的索引是 2 的下一个幂。
此外,这个较小行的第一位总是被跳过或标记为未知(“?”)
我将处理数组 [110] 中的索引从 1 开始,而不是像数组中的自然那样从 0 开始 - 更容易描述我的问题。
在示例中(我在“()”中标记了数组的索引):1(1),1(2),0(3),0(4),1(5),1(6),1(7), 0(8)、1(9)、1(10)、0(11)。
在此示例中,第 1 组(输出 1,跳过 1)将是:1(1) <-unknown(?), 1(2)<-skip, 0(3)<-output, 0(4)<-skip, 1(5)<-输出,1(6)<-跳过,1(7)<-输出,0(8)<-跳过,1(9)<-输出,1(10)<-跳过,0( 11)<-output...直到数组结束[110]
第二组将是(从索引 2 开始;输出 2 并跳过 2;第一个值被认为是未知的): 1(2)<-unknown(?), 0(3)<-output, 0(4)<-skip, 1(5)<-跳过,1(6)<-输出,1(7)<-输出,0(8)<-跳过,1(9)<-跳过,1(10)<-输出,0( 11)<-output...直到数组结束[110]
第三组将是(从索引 4 开始,作为 2 的下一个幂;输出 4 并跳过 4;第一个值未知):0(4)<-unknown(?), 1(5)<-output, 1(6) <-output, 1(7)<-output, 0(8)<-skip, 1(9)<-skip, 1(10)<-skip, 0(11)<- skip...直到数组结束[110]
它是汉明码的一部分。为了更好地理解:https ://www.youtube.com/watch?v=JAMLuxdHH8o
现在,我的方法是创建 7 个不同的数组,例如 group1[]、group2[]... 并手动插入某些我想跳过的索引。然后在 for 循环中,我只用“输出”位填充每个下一个 group[] 数组。
但我想 for-loop 重复地为我做这件事。只需在此处编码以跳过每个 2、4、8(等等)值并输出每个 2、4、8(...)值。因此 7 个 group[] 数组具有不同但静态的输出和跳过“距离”。怎么做?
我的代码是:
int skip2 []= {3,6,7,10,11,14,15,18,19,22,23,26,27,30,31,34,35,38,39,42,43,46,47,
50,51,54,55,58,59,62,63,66,67,70,71,74,75,78,79,82,83,86,87,90,91,94,95,98,99,102,103,106,107};
for (int j : skip2)
{
System.out.print(tab[j] + "("+j+")"+",");
if (j%25==0)
{
System.out.println("");
}
}
对于后面组的更大值(这是来自第 5 组,因此从 16 索引开始 - 但由于未知而跳过它):
for (int m=17; m<110; m++)
{
if ((m>=32 && m<=47) && (m>=64 && m<=79) && (m>=96 && m<=111)) continue;
System.out.print(tab[m] + "("+m+")"+",");
if (m%16==0)
{
System.out.println("");
}
}
第二种方式更数学,因为我必须计算有多少索引跳过。但是,也许有方法可以写出多少个输出和多少个跳过?