Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java矩阵水平,垂直和的数字_Java_Matrix - Fatal编程技术网

Java矩阵水平,垂直和的数字

Java矩阵水平,垂直和的数字,java,matrix,Java,Matrix,我正在编写一个Java代码,任务基本上是创建一个足球联赛矩阵,其中+表示胜利(+3)分,=表示平局(+1)分,-表示失去(0)分。代码应同时考虑水平线和垂直线,即水平线表示在家比赛,垂直线表示客人获胜。问题是我使用了垂直线上的所有“总”点,因此没有剩余的点来填补空白 我得到的输出 Team 1 x + + + + + + + + + + + + + + + + = = - Total: 50 Team 2 + x + + + + + + + + + + + + + + + = - - T

我正在编写一个Java代码,任务基本上是创建一个足球联赛矩阵,其中+表示胜利(+3)分,=表示平局(+1)分,-表示失去(0)分。代码应同时考虑水平线和垂直线,即水平线表示在家比赛,垂直线表示客人获胜。问题是我使用了垂直线上的所有“总”点,因此没有剩余的点来填补空白

我得到的输出

Team 1  x + + + + + + + + + + + + + + + + = = -  Total: 50
Team 2  + x + + + + + + + + + + + + + + + = - -  Total: 49
Team 3  + + x + + + + + + + + + + + + + + - - -  Total: 48
Team 4  + + + x + + + + + + + + + + + + = = - -  Total: 47
Team 5  + + + + x + + + + + + + + + + + = - - -  Total: 46
Team 6  + + + + + x + + + + + + + + + + - - - -  Total: 45
Team 7  + + + + + + x + + + + + + + + = = - - -  Total: 44
Team 8  + + + + + + + x + + + + + + + = - - - -  Total: 43
Team 9  + + + + + + + + x + + + + + + - - - - -  Total: 42
Team 10 + + + + + + + + + x + + + + = = - - - -  Total: 41
Team 11 + + + + + + + + + + x + + + = - - - - -  Total: 40
Team 12 + + + + + + + + + + + x + + - - - - - -  Total: 39
Team 13 + + + + + + + + + + + + x = = - - - - -  Total: 38
Team 14 + + + + + + + + + + + + = x - - - - - -  Total: 37
Team 15 + + + + + + + + + + + + - - x - - - - -  Total: 36
Team 16 + + + + + + + + + + + = = - - x - - - -  Total: 35
Team 17 + + + + + + + + + + + = - - - - x - - -  Total: 34
Team 18 + + + + + + + + + + + - - - - - - x - -  Total: 33
Team 19 + + + + + + + + + + = = - - - - - - x -  Total: 32
Team 20 + + + + + + + + + + = - - - - - - - - x  Total: 31
正如你所看到的,水平线在第一个例子中加起来是50分,垂直线意味着1队输掉了所有其他比赛(敌方队得到+他们得到-),在代码的前半部分,一切都很好,因为每个队都在主场赢,客队输,但最后让我们以20队为例。
他们作为客人赢得了所有比赛,所以水平线加起来是31分,但如果我们加上所有垂直点,他们就远远超过了极限。 我的问题是我怎样才能解决这个问题

代码***

 public static void main(String []args){
        int total = 50;
        String [] [] scores = new String [20][20];
        if(total-20<0){
             System.out.println("Score cannot be negative");
             System.exit(1);
        }
        for (int i=0; i< scores.length; i++){
            int b = f;
            int f = total-i;
            for(int j=0; j< scores[i].length; j++)
            {
            if(i==j){
                scores[i][j] = "x";
            }
            if(f>=3 && i!=j){
                scores[i][j] = "+";
                f=f-3;
            }
            else if (f<=2 && f>0 && i!=j){
                scores[i][j] = "=";
                f=f-1;
            }
            else if(f==0 && i!=j)
            { 
                scores[i][j] = "-"; 
            }
            }
        }
        System.out.print("Team 1  ");
        for (int i=0; i< scores.length; i++){
            int t = i+2;
            int f = total-i;
            for(int j=0; j< scores[i].length; j++){
                System.out.print(scores[i][j]+ " ");
            }
            if(t==21){
            System.out.println(" Total: "+f);
            }
            else if(t<10)
            {
            System.out.println(" Total: "+f);
            System.out.print("Team "+t+"  ");    
            }
            else{
            System.out.println(" Total: "+f);
            System.out.print("Team "+t+" ");}
        }

}
publicstaticvoidmain(字符串[]args){
整数合计=50;
字符串[][]分数=新字符串[20][20];
如果(总计-20=3&&i!=j){
分数[i][j]=“+”;
f=f-3;
}
else如果(f0&&i!=j){
分数[i][j]=”=”;
f=f-1;
}
else如果(f==0&&i!=j)
{ 
分数[i][j]=“-”;
}
}
}
系统输出打印(“团队1”);
for(int i=0;i否则,如果(t当我提出算法时,我喜欢做的是试图找出尽可能多的事实,我可能会利用它们

数据事实:
任意值和规则:
让w=+3分获胜
让l=+0分表示损失
设d=+1分为平局
让每个队和另一队比赛两次
设w>d>=l
Let(x,y)=比赛中每个队的得分结果
设possibleMatchOutcomes={(3,0)、(0,3)、(1,1)}
让PossibleTeamPointOutlets={3,0,1};从可能的匹配结果中得出
设possibleLeaguePointOutcomes={3,2};
可能的比赛结果的整个联盟可能的净分
+3分胜负+2分平局/平局
-------------
输入值:
Let targetScoresList=每个团队的目标分数列表
----------------
计算值:
设n=长度(targetScoresList)
让leagueTargetScore=总和(targetScoresList)
让teamGames=2(n-1)=2(20-1)=38;一个团队玩的游戏数,始终为偶数
让LeagueAgames=n^2-n=20^2-20=380;联盟中进行的总游戏数,始终为偶数
让minNet=min(可能的eAguePointOutcomes)=2;对于结果(d,d)
设maxNet=max(possibleLeagueInputOutcomes)=3;对于结果(w,l)或(l,w)
//每个团队的最低和最高总分
让minTeamTotalPoints=teamGames*l=38*0=0
设maxTeamTotalPoints=teamGames*w=38*3=114
//整个联赛的最低和最高总积分
让minLeagueTotalPoints=leagueGames*minNet=380*2=760
让maxLeagueTotalPoints=leagueGames*maxNet=380*3=1140
有效性事实:
当有20支球队时,获胜值为+3,失利值为+0,平局值为+1
一个队的得分必须在0到114之间
总分必须是介于760和1140之间的偶数
算法:
检查每个团队的分数是否有效,如果无效则出错
检查联赛目标分数是否有效,如果无效则出错
每个队的当前得分为(teamGames*d),为38分
targetScore是团队根据输入应该拥有的分数
分数差为(currentScore-targetScore)
任何得分差为负的球队都需要得分
任何得分差为正的球队都需要丢分
任何得分差为零的球队都有正确的分数,
为了保持零分差,可能会输掉两倍于赢的比赛
每次比赛在抽签/抽签时开始整个网格
胜利是+2的差额(因为平局是+1)
损失是-1的差值(因为平局是+1)
NumleAgueeWinlossMatches是(leagueTargetScore-minLeagueTotalPoints)
因为输赢比赛和平局比赛之间的净差额是1
确定每个团队赢/输的基本数量
使分数为奇数的最小赢数和可能的输数
随机加入1胜2负的队伍(至少还有3场平局)
然后,每支球队为某些球队增加+1胜+2负,直到达到联赛目标分数
对于每一个团队,根据其获胜的数量,给它相对于其他团队的胜利
只要另一支球队还有更多的输球,否则就试试下一支球队。

“但如果我们同时添加所有垂直点,它们会远远超过限制。我的问题是如何解决这个问题”限制是什么,为什么?限制是矩阵右侧的“总数”。任务是为每个团队取一个数字,并将其减少1,因此输入是总数,然后需要“平衡”各队得分的计分表是否符合这些总数(每队减少1分)?是的,这就是我最终需要做的事情。它应该是这样的,但我使用+-=确定一个(多个)有效计分板(或者如果可能的话)而不是颜色对于团队总数的列表听起来很难…你确定这是你需要做的吗?这是一个算法类的吗?也许你可以给我一个关于选择团队的算法的线索?