- 论坛徽章:
- 0
|
有关算法问题,请各大虾请教一二:
我只对 1 有兴趣:
- #include <stdio.h>;
- #define _MAX_ 20
- main(int argc, char **argv)
- {
- int iLin,iTo,iCol,iOut, iSide, iArSnk[_MAX_][_MAX_];
- int iArTo[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};
- iSide = atoi(argv[1]);
- if (argc!=2 || iSide>;=_MAX_)
- {
- printf ("\n\tUsage : %s SideSize ( < %d )\n", argv[0], _MAX_);
- exit(-1);
- }
- memset (iArSnk, -1, sizeof(iArSnk));
- for (iLin=-1,iTo=0,iCol=0,iOut=1; iOut<=(iSide*iSide); iOut++)
- {
- if (iArSnk[iLin+iArTo[iTo][0]][iCol+iArTo[iTo][1]]>;0 ||
- iLin+iArTo[iTo][0]>;=iSide || iCol+iArTo[iTo][1]>;=iSide ||
- iLin+iArTo[iTo][0]<0 || iCol+iArTo[iTo][1]<0 )
- iTo = (iTo+1)%4;
- iLin += iArTo[iTo][0] ; iCol += iArTo[iTo][1];
- iArSnk[iLin][iCol] = iOut;
- }
- for (iLin=0; iLin<iSide;printf("\n"), iLin++)
- for (iCol=0;iCol<iSide ;printf ("%3d ", iArSnk[iLin][iCol]), iCol++);
- }
复制代码 |
|