求助数组编程题
在本题中,你需要为每一个单元格统计出它周围的一样数字的个数,每个单元格只统计上,下,左,右四个单元格,且每组测试样例都为4*4矩阵,
如下图,
输入样例为
2 2 4 4
2 3 5 7
4 3 5 8
4 5 8 8
输出结果为
2 1 1 1
1 1 1 0
1 1 1 1
1 0 1 2
package practice1109;
import java.util.Scanner;
public class Matrix01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] m=new int;
int i,j;
Scanner sc=new Scanner(System.in);
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
m=sc.nextInt();
}
}
/*
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(j==0) {
System.out.print(m);
}
else {
System.out.print(" "+m);
}
if(j==3) {
System.out.println();
}
}
}*/
int [][] res= new int ;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
int count;
//四个角的
if(i==0&&j==0) {//
count=0;
if(m==m) count++;
if(m==m) count++;
res=count;
}
else if(i==0&&j==3) {//
count=0;
if(m==m) count++;
if(m==m) count++;
res=count;
}
else if(i==3&&j==0) {//
count=0;
if(m==m) count++;
if(m==m) count++;
res=count;
}
else if(i==3&&j==3) {//
count=0;
if(m==m) count++;
if(m==m) count++;
res=count;
}
//第一行 不是第一列和最后一列的元素
else if(i==0&&(j==1||j==2)) {//
if(j==1) {
count=0;
if(m==m) count++;
if(m==m) count++;
if(m==m) count++;
res=count;
}
else if(j==2) {
count=0;
if(m==m) count++;//和左右下比
if(m==m) count++;
if(m==m) count++;
res=count;
}
}
//最后一行
else if(i==3&&(j==1||j==2)) {//
if(j==1) {
count=0;
if(m==m) count++;
if(m==m) count++;
if(m==m) count++;
res=count;
}
else if(j==2) {
count=0;
if(m==m) count++;//和左右下比
if(m==m) count++;
if(m==m) count++;
res=count;
}
}
//第一列
else if(j==0&&(i==1||i==2)) {
if(i==1) {
count=0;
if(m==m) count++;
if(m==m) count++;
if(m==m) count++;
res=count;
}
else if(i==2) {
count=0;
if(m==m) count++;
if(m==m) count++;
if(m==m) count++;
res=count;
}
}
//最后列
else if(j==3&&(i==1||i==2)) {
if(i==1) {
count=0;
if(m==m) count++;
if(m==m) count++;
if(m==m) count++;
res=count;
}
else if(i==2) {
count=0;
if(m==m) count++;
if(m==m) count++;
if(m==m) count++;
res=count;
}
}
else {
count=0;
if(m==m) count++;//和左右上下比
if(m==m) count++;
if(m==m) count++;
if(m==m) count++;
res=count;
}
}}
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(j==0) {
System.out.print(res);
}
else {
System.out.print(" "+res);
}
if(j==3) {
System.out.println();
}
}
}
}
}
我的方法:用Java写的,和C没有区别。
if-else 分类讨论一下四个角的元素和首行首列的元素,再把其他元素上下左右相邻的都讨论一遍,感觉方法好笨,代码冗余,有没有好一点的实现方法{:10_266:} 本帖最后由 jhq999 于 2021-11-10 05:40 编辑
例如:数组,数组2={0};
=>,,,;
范围(8>i+1 ,i-1>=0,j-1>=0,j+1<9;
for(i=0;i<8;i++)
{
for(j=0;j<9;j++)
{
if(i+1<8)if(数组==数组)数组2++;
if(i-1)>=0)if(数组==数组)数组2++;
if(j-1)>=0)if(数组==数组)数组2++;
if(j+1)<9)if(数组==数组)数组2++;
}
}
输出数组2
页:
[1]