如何在java中正确输入矩阵
我有个问题 我正在尝试制作一个程序,用户将在其中键入 r=行 c=列 在0和1之后,只要矩阵是满的 因此,它将创建一个图片。。。。r*v…,用字符1和0填充 那些1代表块。 现在程序应该输出图片中有多少块? (0001001110-随机矩阵第一行的示例)-将打印出2 我正在努力正确地输入程序,然后计算那些块的数量 这就是我到目前为止一直在尝试的如何在java中正确输入矩阵,java,matrix,multidimensional-array,Java,Matrix,Multidimensional Array,我有个问题 我正在尝试制作一个程序,用户将在其中键入 r=行 c=列 在0和1之后,只要矩阵是满的 因此,它将创建一个图片。。。。r*v…,用字符1和0填充 那些1代表块。 现在程序应该输出图片中有多少块? (0001001110-随机矩阵第一行的示例)-将打印出2 我正在努力正确地输入程序,然后计算那些块的数量 这就是我到目前为止一直在尝试的 import java.util.Scanner; class Blocks{ public static void main(String
import java.util.Scanner;
class Blocks{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int rowNum=sc.nextInt(); //number of rows
int columnNum=sc.nextInt(); //number of columns
int blocks=0;
char[][] matrix=new char[rowNum][columnNum];
for (int a = 0; a < rowNum; a++) {
for (int b = 0; b < columnNum; b++) {
char[] row= sc.next().toCharArray();
for(int i=0; i<matrix.length;i++) {
if(row[i]=='1'){
blocks++;
if(row[i+1]=='1') {
blocks--;
}
}
}
}
}
}
import java.util.Scanner;
类块{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int rowNum=sc.nextInt();//行数
int columnNum=sc.nextInt();//列数
整数块=0;
char[][]矩阵=新字符[rowNum][columnNum];
对于(int a=0;a 对于(inti=0;i像这样的东西怎么样
int blocks = 0;
char[][] matrix = new char[rowNum][columnNum];
int nbrOfBlocks = 0;
for (int a = 0; a < rowNum; a++) {
matrix[a] = sc.next().toCharArray();
int index = 0;
while (index < matrix[a].length) {
if (matrix[a][index] == '1') {
++nbrOfBlocks;
while (index < matrix[a].length && matrix[a][index] == '1') {
++index;
}
}
++index;
}
}
System.out.println(nbrOfBlocks);
int块=0;
char[][]矩阵=新字符[rowNum][columnNum];
int=0;
对于(int a=0;a
why 2 for(0001001110-随机矩阵第一行示例)-这将打印出2?问题是什么?另一个例子:r=2 c=4 0010 1100 1111 0101这将打印出5。因为它只在该矩阵中查找1,1构成一个块。11是块大小2。1111是块大小4…依此类推。上面的例子有3个块。一个在第一行,另一个在第二行,然后再次在第四行ird和第四行的2个块问题是我甚至不能正确输入。我如何不断要求用户给我这些数字(0和1)直到矩阵满为止。这些块是由一个或多个值为1的相邻元素组成的组。这只是输入格式的第一部分,请正确解释,否则会有很多错误。很抱歉,这给了我一个错误,试图编译…不兼容的类型:char[]无法转换为字符深度优先搜索与这个简单的问题有什么关系?最初的问题并没有明确说明块只在一行内形成,对于这样的块,DFS将是一个很好的解决方案。@Simon块也可以在colums 00100/00100/10000/中形成,有2个块…@Simon谢谢!但是我们如何才能如果块在一列中,或者如果块是完美的矩形,我会在帖子中添加更多信息…你太棒了!
if(row[i]=='1'){
if(row[i+1]=='0')
blocks++;
}
int blocks = 0;
char[][] matrix = new char[rowNum][columnNum];
int nbrOfBlocks = 0;
for (int a = 0; a < rowNum; a++) {
matrix[a] = sc.next().toCharArray();
int index = 0;
while (index < matrix[a].length) {
if (matrix[a][index] == '1') {
++nbrOfBlocks;
while (index < matrix[a].length && matrix[a][index] == '1') {
++index;
}
}
++index;
}
}
System.out.println(nbrOfBlocks);