Advertisement
juinda

1031題

Oct 11th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. // ConsoleApplication1.cpp : 定義主控台應用程式的進入點。
  2. //
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. void R(int**, int, int*, int*, int*);
  8. void D(int**, int, int*, int*, int*);
  9. void L(int**, int, int*, int*, int*);
  10. void U(int**, int, int*, int*, int*);
  11. int main()
  12. {
  13. int i, j, k, num, x;//i為遞增至x之數 j為陣列x維度 k為陣列y維度 x為最大數(num^2)
  14. while (scanf("%d", &num) != EOF)
  15. {
  16. int **a = (int**)malloc(sizeof(int*) * num);
  17. for (int i = 0; i < num; ++i)
  18. a[i] = (int*)malloc(sizeof(int) * num);
  19. for (int i = 0; i < num; i++)//初始化陣列所有值
  20. {
  21. for (int j = 0; j < num; j++)
  22. {
  23. a[i][j] = 0;
  24. }
  25. }
  26. x = num*num;
  27. i = 1, j = 0, j = 0;
  28. while (i <= x)//若值尚未設完
  29. {
  30.  
  31. R((int**)a, num, &i, &j, &k);
  32. D((int**)a, num, &i, &j, &k);
  33. L((int**)a, num, &i, &j, &k);
  34. U((int**)a, num, &i, &j, &k);
  35. }
  36. for (int m = 0; m < num; m++)//輸出
  37. {
  38. for (int n = 0; n < num; n++)
  39. {
  40. printf("%3d", a[i][j]);
  41. }
  42. puts("");
  43. }
  44. }
  45. return 0;
  46. }
  47. void R(int **a, int num, int *i, int *j, int *k)//向右逐步設值
  48. {
  49. while ((*k < num)&&(a[*j][*k + 1] == 0))
  50. {
  51. a[*j][*k] = *i;
  52. *i++;
  53. *k++;
  54. }
  55. }
  56. void D(int **a, int num, int *i, int *j, int *k)//向下逐步設值
  57. {
  58. while (*j<num&&a[*j+1][*k]==0)
  59. {
  60. a[*j][*k] = *i;
  61. *i++;
  62. *j++;
  63. }
  64. }
  65. void L(int **a, int num, int *i, int *j, int *k)//向左逐步設值
  66. {
  67. while (*k >= 0 && a[*j][*k - 1] == 0)
  68. {
  69. a[*j][*k] = *i;
  70. *i++;
  71. *k--;
  72. }
  73. }
  74. void U(int **a, int num, int *i, int *j, int *k)//向上逐步設值
  75. {
  76. while (*j>=0&&a[*j-1][*k]==0)
  77. {
  78. a[*j][*k] = *i;
  79. *j--;
  80. *i++;
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement