我的思路是先找到所求数字n 所在第m圈对角线的元素为m^2-m+1,然后根据坐标差值求出n的坐标,注意奇偶坐标的处理。
/*
* uva10161.cpp
*
* Created on: 2013-4-16
* Author: kevinjiang
*/
#include<cstdio>
#include<cmath>
int main() {
// setbuf(stdout,NULL);
int n;
while (scanf("%d", &n) != EOF) {
if (n == 0)
break;
int m = (int) sqrt(n - 1) + 1;
int diag = m * m - m + 1;
int diff = n - diag;
int x = m, y = m;
if (diff >= 0)
x = m - diff;
else
y = m + diff;
if(m%2==1)
printf("%d %d\n",x,y);
else
printf("%d %d\n",y,x);
}
return 0;
}
本文介绍了解决UVA10161问题的一种算法思路,该问题涉及寻找特定数值在螺旋矩阵中的位置。通过计算所在圈数及对角线元素,结合坐标差值得到目标值的位置,并特别考虑了奇偶坐标的情况。
711

被折叠的 条评论
为什么被折叠?



