1代表黑格子,0代表白格子。要求算法能够实现:每次能够输出一个7行乘以7列的由0或1组成的矩阵,输出50次,这50个矩阵,(每个矩阵由7乘以7=49个元素组成)每个矩阵之间不能有50%以上的数据重复。换句话说,每个矩阵都必须和其它49个矩阵有50%以上的不相同元素值(即不相同元素的个数必须大于等于25个)。举个例子
1111111    1111111
1111111    1111111
1111111    1111111
1111111  和1111111 像这样的两个矩阵,元素值相同的位置是42个,肯定不符合要求。
1111111    1111111
1111111    1111111
0000000    1111111又如
1111111    0000000
0111111    0000000
0011111    0000000 就符合要求,元素值相同的位置是21个,不相同的位置是28个。但是这只是另外49个中的一个,是否能
0001111    0000000 保证和那另外48个矩阵的值不相同的位置也大于等于25个?
0000111    0000000
0000011    0000000
0000001    0000000本人非常急,希望哪位高手,能帮我解答一下这个问题。

解决方案 »

  1.   

    import java.util.Random;public class RamTest {
    public int count(String str,String arrLo){
    int init=0;
    String[] arr1 = str.split("(?<=\\G.)");
    String[] arr2=arrLo.split("(?<=\\G.)");
            for(int i=0;i<arr1.length;i++){
             if(arr1[i]!=arr2[i]){
             init++;
             }
            }
    return init;

    }
    public static void main(String[] args){
    RamTest rt=new RamTest();
    Random ran=new Random();
    String[] arr=new String[50];
    lab: for(int i=0;i<50;i++){
    Long l=ran.nextLong();
    String s=Long.toBinaryString(l);
    if(s.length()<49){
    i--;
    continue lab;
    }
    String str=s.substring(s.length()-49);
    for(int j=0;j<i;j++){
    String arrLo=arr[j];


    if(rt.count(str,arrLo)<25){
    i--;
    continue lab;
    }
    }
    arr[i]=str;
    System.out.println(str+"   "+str.length());
    }
    }
    }
    测试结果
    0111100101001111000100111101111110011100111000000   49
    1110101111111111001111000010010110101010000111011   49
    1011001100011110000010101101000110010001101010010   49
    1011101000010101100101001000010001001100101001100   49
    1000001101010100110000001000110101100011100100111   49
    1000000001110110010011101100101110000010011101010   49
    1010110000010100000100111100000011001011010001010   49
    1110010100101011100110111111111100110010110010110   49
    0110100010011100011000010100100011100100000001010   49
    1000001011011111101011000111100100100011011110010   49
    1001101010111010100110111101100010111101111000101   49
    1010110101011010000110011011000000111100110100111   49
    0010010011001110100110100001101110101111111101001   49
    1100001110010111000010100100001011011010110001000   49
    1001101001110111110101001101101101001100101110111   49
    0100100110000011101101111101001111011100111110111   49
    0001000111011110001011000000110011111010101001010   49
    1010001101010100111000100101001101001000010000111   49
    0111111110011011101011001010100101010010101011000   49
    1110110010000100010000111100011001101010111100010   49
    1010011101000111101100011110111110000111000110110   49
    0000010001101001110001111011000010010110011101101   49
    0100101010011110111101010101100100110100011100001   49
    1000101001110011010110001111110010100000000101001   49
    1110000101010001100011010010011100011110010111010   49
    0010010000000001100100011101100001111010101011100   49
    1100001101100110111110000011010101111010111010010   49
    0000010111011111111101010111011101011011101101111   49
    0101000001001101011001101100111010001101101101000   49
    0101101101100001001010010100001111111101010011010   49
    0011110010000000100101011001110001110101010101111   49
    1100010100010101101000001101001110101111010111101   49
    1100111111010101011011011100011100101100111010011   49
    1100100100100111111011110000010000001010000010001   49
    0111111001100011111110011101100111100011100111110   49
    1010111101010110111100100011100000110010111111111   49
    1110011000001111101000100101101011101100100010110   49
    1110001010001110111011101100011111001000001001111   49
    1101101010110010011110010011001110101000100001010   49
    1001001000100100001010001000000010100001010000101   49
    1100101011101001000011000011100111101100001001110   49
    1110110010101010010000111011110110111010110000111   49
    0110011101111000010100111000001010000011111100011   49
    1110111001110100001100110010100010111011110000011   49
    0001011101011011101001111011110010011000100011011   49
    0101110110100110110101011110000010101001000001111   49
    0110001001101011011100011100111111010101001011100   49
    0010110111111001011110011001011101110111010010001   49
    0001110010101010001010110111001101010010000100100   49
    0010011000001011010101100110000101001110011100000   49
    LZ只需要把这个的长度为49的字符串转化成7*7的矩阵就可以了,希望对LZ有帮助
      

  2.   

    zai xian deng a.
    shui neng bang zhu wo jie jue yi xia wen ti.
      

  3.   

    import java.util.ArrayList;
    import java.util.Random;/**
     * @author Thanatos
     *
     */
    public class matrix { public static void main(String[] args)
    {
    Random rd=new Random();
    int change = 25+rd.nextInt(24);
    ArrayList <Integer>num=new ArrayList<Integer>();
    for(int i=0;i<change;i++)
    {
    num.add(new Integer(rd.nextInt(49)));
    }
    for(int i=0;i<49;i++)
    {
    if(i%7==0&&i!=0)
    {
    System.out.println();
    }
    if(num.contains(new Integer(i)))
    {
    System.out.print(1+" ");
    }
    else
    {
    System.out.print(0+" ");
    }
    }
    }}