public static int[][] generateMatrix(int n) {
int loop=n/2;
int mid=n/2;
int offset=1;
int startX=0,startY=0;
int[][] result=new int[n][n];
int i,j;
int count=1;
while (loop--!=0){
int turns=n-offset;
for(i=startX;i<turns;i++){
result[startX][i]=count++;
}
for(j=startY;j<turns;j++){
result[j][i]=count++;
}
for(;i>=offset;i--){
result[j][i]=count++;
}
for(;j>=offset;j--){
result[j][i]=count++;
}
offset++;
startX++;
startY++;
}
if(n%2!=0){
result[mid][mid]=count;
}
return result;
}