面试了个JAVA的题,大家帮忙看看!

wj539h_1 2010-03-08 03:18:58
要求写一个方法,参数是个int
当参数是1就输出
1
当参数是2就输出
222
212
222
当参数是3就输出
33333
32223
32123
32223
33333
...全文
486 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
kyousuke 2010-03-09
  • 打赏
  • 举报
回复
引用 19 楼 zings 的回复:
让我想起大一学c的时候。。。

话说我看全金属狂潮的时候,从头笑到尾,脸都抽了
没见过一脸严肃的表情干着幽默事的
icy_csdn 2010-03-09
  • 打赏
  • 举报
回复
另类实现方法


请参见
http://blog.csdn.net/icy_csdn/archive/2010/03/09/5359153.aspx
cys0429831 2010-03-09
  • 打赏
  • 举报
回复
引用 3 楼 wanyeyinfeng 的回复:
Java codepublicclass test {publicstaticvoid main(String[] args) {long a=4;for (long i=0; i<2* a-1; i++) {for (long j=0; j<2* a-1; j++) {long m= Math.abs(i- a+1)+1;long n= Math.abs(j- a+1)+1;long x= m>?-
好厉害啊
Dazzlingwinter 2010-03-09
  • 打赏
  • 举报
回复

for(int i=1; i<=N; i++) {
prints[N-i][N-i] = i;
for(int k=0; k<=2*(i-1);k++) {
prints[N-i][N-i+k] = i;
prints[N-i+k][N-i] = i;
prints[N-i+2*(i-1)][N-i+k] = i;
prints[N-i+k][N-i+2*(i-1)] = i;
}
}

晕,多写了一个循环。。。
这样就可以出来了。。。
Dazzlingwinter 2010-03-09
  • 打赏
  • 举报
回复

public class RadiationMatrix {
public static final int N = 5;
public static void main(String[] args) {
System.out.println("Init-N=" + N);
int n = 2*N-1;
int[][] prints = new int[n][n];

for(int i=1; i<=N; i++) {
for(int j=0; j<2*i-1; j++) {
prints[N-i][N-i] = i;
for(int k=0; k<=2*(i-1);k++) {
prints[N-i][N-i+k] = i;
prints[N-i+k][N-i] = i;
prints[N-i+2*(i-1)][N-i+k] = i;
prints[N-i+k][N-i+2*(i-1)] = i;
}
}
}

for(int i=0; i<prints.length; i++) {
for(int j=0; j<prints[i].length; j++) {
System.out.print(prints[i][j] + "\t");
}
System.out.println();
}
}
}
//Result
//Init-N=5
//5 5 5 5 5 5 5 5 5
//5 4 4 4 4 4 4 4 5
//5 4 3 3 3 3 3 4 5
//5 4 3 2 2 2 3 4 5
//5 4 3 2 1 2 3 4 5
//5 4 3 2 2 2 3 4 5
//5 4 3 3 3 3 3 4 5
//5 4 4 4 4 4 4 4 5
//5 5 5 5 5 5 5 5 5
b1412 2010-03-09
  • 打赏
  • 举报
回复
学习一下了,mark
Dazzlingwinter 2010-03-09
  • 打赏
  • 举报
回复
昨天把那个螺旋矩阵写了,回头一看这个是辐射矩阵。。。
中心为1,向外扩散一圈儿打印数加1直到最外层。。。
现在回去写个,回头贴上来,貌似已经有答案了。。。
zings 2010-03-08
  • 打赏
  • 举报
回复
让我想起大一学c的时候。。。
bayougeng 2010-03-08
  • 打赏
  • 举报
回复
31113
这样的不行是么?我也写一个看看。
吟风 2010-03-08
  • 打赏
  • 举报
回复
引用 16 楼 jxsfreedom 的回复:
引用 15 楼 wanyeyinfeng 的回复:
引用 14 楼 jxsfreedom 的回复:引用 12 楼 wanyeyinfeng 的回复: 引用 11 楼 jxsfreedom 的回复:引用 3 楼 wanyeyinfeng 的回复: Java codepublicclass test {publicstaticvoid main(String[] args) {long a=4;for (long i=0; i<2* a-1; i++) {for (long j=0; j<2* a-1; j++) {long m= Math.abs(i- a+1)+1;long n= Math.abs(j- a+1)+1;long x= m>?- 看了半天还是无法理解这代码的意思- -! 解释一下就是矩阵中任意一点的坐标的x或者y距离矩阵中心点的距离较大的值。 假设制定值为a,则矩阵有2a-1行,2a-1列,中心位置为(a,a) 则对于任意一点(x,y)  value=MAX(|x-a|,|y-a|); 原来如此,他的代码我看得难懂,不知道他Math.abs里面还要减1干嘛 听你这么说中心我就突然觉悟了,还有中心不是(a,a)应该是(a-1,a-1) Java codepublicstaticvoid main(String[] args){int n=4;int center= n-1;int len= n*2-1;int v;int nx,ny;for(int y=0; y< len; y++){for(int x=0; x< len; x++){ nx= Math.abs(x- center)+1; ny= Math.abs(y- center)+1; v= nx> ny? nx : ny; System.out.print(v); } System.out.println(); } }

你这个他啊你啊的,把我都看蒙了。俺就是一个人好不。。。
至于中心点的位置,我有我自己的理解方式,在我的脑子里面得到的结果的索引值为从1开始,
而print的时候是从零开始,所以才有了abs里面的+1,
说到底你把你的center带入的话,咱们的程序完全一样吧。呵呵
不过按照你说的中心为a-1,a-1可能更好理解一些。因为可以放在一套坐标系中来考虑。
唉,没注意看你就他,我还以为你和他不一样,原来你就是他,他就是你


你是个说绕口令滴~~~~
kyousuke 2010-03-08
  • 打赏
  • 举报
回复
引用 15 楼 wanyeyinfeng 的回复:
引用 14 楼 jxsfreedom 的回复:引用 12 楼 wanyeyinfeng 的回复: 引用 11 楼 jxsfreedom 的回复:引用 3 楼 wanyeyinfeng 的回复: Java codepublicclass test {publicstaticvoid main(String[] args) {long a=4;for (long i=0; i<2* a-1; i++) {for (long j=0; j<2* a-1; j++) {long m= Math.abs(i- a+1)+1;long n= Math.abs(j- a+1)+1;long x= m>?- 看了半天还是无法理解这代码的意思- -! 解释一下就是矩阵中任意一点的坐标的x或者y距离矩阵中心点的距离较大的值。 假设制定值为a,则矩阵有2a-1行,2a-1列,中心位置为(a,a) 则对于任意一点(x,y)  value=MAX(|x-a|,|y-a|); 原来如此,他的代码我看得难懂,不知道他Math.abs里面还要减1干嘛 听你这么说中心我就突然觉悟了,还有中心不是(a,a)应该是(a-1,a-1) Java codepublicstaticvoid main(String[] args){int n=4;int center= n-1;int len= n*2-1;int v;int nx,ny;for(int y=0; y< len; y++){for(int x=0; x< len; x++){ nx= Math.abs(x- center)+1; ny= Math.abs(y- center)+1; v= nx> ny? nx : ny; System.out.print(v); } System.out.println(); } }

你这个他啊你啊的,把我都看蒙了。俺就是一个人好不。。。
至于中心点的位置,我有我自己的理解方式,在我的脑子里面得到的结果的索引值为从1开始,
而print的时候是从零开始,所以才有了abs里面的+1,
说到底你把你的center带入的话,咱们的程序完全一样吧。呵呵
不过按照你说的中心为a-1,a-1可能更好理解一些。因为可以放在一套坐标系中来考虑。

唉,没注意看你就他,我还以为你和他不一样,原来你就是他,他就是你
吟风 2010-03-08
  • 打赏
  • 举报
回复
引用 14 楼 jxsfreedom 的回复:
引用 12 楼 wanyeyinfeng 的回复:
引用 11 楼 jxsfreedom 的回复:引用 3 楼 wanyeyinfeng 的回复: Java codepublicclass test {publicstaticvoid main(String[] args) {long a=4;for (long i=0; i<2* a-1; i++) {for (long j=0; j<2* a-1; j++) {long m= Math.abs(i- a+1)+1;long n= Math.abs(j- a+1)+1;long x= m>?- 看了半天还是无法理解这代码的意思- -!

解释一下就是矩阵中任意一点的坐标的x或者y距离矩阵中心点的距离较大的值。

假设制定值为a,则矩阵有2a-1行,2a-1列,中心位置为(a,a)
则对于任意一点(x,y) 
value=MAX(|x-a|,|y-a|);
原来如此,他的代码我看得难懂,不知道他Math.abs里面还要减1干嘛
听你这么说中心我就突然觉悟了,还有中心不是(a,a)应该是(a-1,a-1)

Java codepublicstaticvoid main(String[] args){int n=4;int center= n-1;int len= n*2-1;int v;int nx,ny;for(int y=0; y< len; y++){for(int x=0; x< len; x++){
nx= Math.abs(x- center)+1;
ny= Math.abs(y- center)+1;
v= nx> ny? nx : ny;
System.out.print(v);
}
System.out.println();
}

}


你这个他啊你啊的,把我都看蒙了。俺就是一个人好不。。。
至于中心点的位置,我有我自己的理解方式,在我的脑子里面得到的结果的索引值为从1开始,
而print的时候是从零开始,所以才有了abs里面的+1,
说到底你把你的center带入的话,咱们的程序完全一样吧。呵呵
不过按照你说的中心为a-1,a-1可能更好理解一些。因为可以放在一套坐标系中来考虑。
kyousuke 2010-03-08
  • 打赏
  • 举报
回复
引用 12 楼 wanyeyinfeng 的回复:
引用 11 楼 jxsfreedom 的回复:引用 3 楼 wanyeyinfeng 的回复: Java codepublicclass test {publicstaticvoid main(String[] args) {long a=4;for (long i=0; i<2* a-1; i++) {for (long j=0; j<2* a-1; j++) {long m= Math.abs(i- a+1)+1;long n= Math.abs(j- a+1)+1;long x= m>?- 看了半天还是无法理解这代码的意思- -!

解释一下就是矩阵中任意一点的坐标的x或者y距离矩阵中心点的距离较大的值。

假设制定值为a,则矩阵有2a-1行,2a-1列,中心位置为(a,a)
则对于任意一点(x,y) 
value=MAX(|x-a|,|y-a|);

原来如此,他的代码我看得难懂,不知道他Math.abs里面还要减1干嘛
听你这么说中心我就突然觉悟了,还有中心不是(a,a)应该是(a-1,a-1)


public static void main(String[] args){
int n = 4;
int center = n - 1;
int len = n * 2 - 1;
int v;
int nx,ny;
for(int y = 0; y < len; y++){
for(int x = 0; x < len; x++){
nx = Math.abs(x - center) + 1;
ny = Math.abs(y - center) + 1;
v = nx > ny ? nx : ny;
System.out.print(v);
}
System.out.println();
}

}
jypapgl 2010-03-08
  • 打赏
  • 举报
回复
3L必须得分
吟风 2010-03-08
  • 打赏
  • 举报
回复
引用 11 楼 jxsfreedom 的回复:
引用 3 楼 wanyeyinfeng 的回复:
Java codepublicclass test {publicstaticvoid main(String[] args) {long a=4;for (long i=0; i<2* a-1; i++) {for (long j=0; j<2* a-1; j++) {long m= Math.abs(i- a+1)+1;long n= Math.abs(j- a+1)+1;long x= m>?-
看了半天还是无法理解这代码的意思- -!


解释一下就是矩阵中任意一点的坐标的x或者y距离矩阵中心点的距离较大的值。

假设制定值为a,则矩阵有2a-1行,2a-1列,中心位置为(a,a)
则对于任意一点(x,y)
value=MAX(|x-a|,|y-a|);
kyousuke 2010-03-08
  • 打赏
  • 举报
回复
引用 3 楼 wanyeyinfeng 的回复:
Java codepublicclass test {publicstaticvoid main(String[] args) {long a=4;for (long i=0; i<2* a-1; i++) {for (long j=0; j<2* a-1; j++) {long m= Math.abs(i- a+1)+1;long n= Math.abs(j- a+1)+1;long x= m>?-

看了半天还是无法理解这代码的意思- -!
  • 打赏
  • 举报
回复
public class Test {
public static void main(String[] args)throws Exception{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));

while(true){
int num=Integer.parseInt(reader.readLine());

try{
if(num>0){
printMatrix(num);
}else{
break;
}
}catch(Exception e){
break;
}
}

reader.close();
}

public static void printMatrix(int n){
if(n<1) return;

int size=2*n-1;
int val;

System.out.print("\n--------------------------------------\n");
for(int i=1;i<=size;i++){
for(int j=1;j<=size;j++){
val=Math.max(Math.abs(i-n)+1,Math.abs(j-n)+1);
System.out.print(String.format("%-4s", val));
}
System.out.print('\n');
}
System.out.print("--------------------------------------\n");
}
}
SambaGao 2010-03-08
  • 打赏
  • 举报
回复
引用 3 楼 wanyeyinfeng 的回复:
Java codepublicclass test {publicstaticvoid main(String[] args) {long a=4;for (long i=0; i<2* a-1; i++) {for (long j=0; j<2* a-1; j++) {long m= Math.abs(i- a+1)+1;long n= Math.abs(j- a+1)+1;long x= m>?-


..
abc409992359 2010-03-08
  • 打赏
  • 举报
回复
规律就是上下对称,或者是对角对称
  • 打赏
  • 举报
回复
先标记,回去在写。回帖真麻烦
加载更多回复(6)

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧