这段代码有点儿不明白!
题目很简单,就是生成一个螺形的矩阵..我略去一些小细节..只说我看不明的地方..
int main()
{
int i,j,t;
while(scanf("%d%d%d",&j,&i,&t)!=EOF)
{
int n=1,h=0,s=0, k[31][31]={{},{}};
i--;j--;
while(t){
k[s][h]=n++;
if((h>=s || k[s-1][h]!=0) && (h<j) && k[s][h+1]==0 )h++;
else if( (s<i) && k[s+1][h]==0)s++;
else if( h>0 && k[s][h-1]==0)h--;
else if( s>0 && k[s-1][h]==0)s--;
else break;
}
如果输入3 5 1 (这里1,或0代表顺,逆时针...略)
就是生成一个横5, 纵3的矩阵...
对于i--,j--,我的理解是因为数组从0开始,所以减1而与数组相符
这时的i,j调用完之后,就是2,4 了吧..
再继续执行..
h<j, s<i(都没有等号)
h,s 分别只能到1, 3才对吧.
那么真正输出的就不会是3,5的阵了..
我个人认为要是有i--,j--,就改成h<=j,s<=i
或者不要i--,j--,直接就是h<j,s<i就好了..
但是我改后,不能得到正确答案..
就各位指正...我很困惑!!!!