Advertisement
heian

Untitled

Jul 16th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int dx[] = {+1,-1, 0, 0};
  6. int dy[] = { 0, 0,+1,-1};
  7.  
  8. int modul(int x)
  9. {
  10. if(x<0) return -1*x;
  11. return x;
  12. }
  13.  
  14. bool InMat(int x, int y, int n, int m)
  15. {
  16. if(x<1 || y<1 || x>n || y>m)
  17. return false;
  18. return true;
  19.  
  20. /**
  21. !(a && b) == !a || !b
  22. !(a || b) == !a && !b
  23. Legile lui De Morgan
  24.  
  25. */
  26.  
  27. }
  28.  
  29. int PunctulB(int n, int m,int A[100][100], int L, int C)
  30. {
  31. int nrap[n+1][m+1];
  32. int x, y;
  33. x = L; y = C;
  34.  
  35. for(int i=1;i<=n;++i)
  36. for(int j=1;j<=m;++j)
  37. nrap[i][j] = 0;
  38. int minim = 2000000000;
  39. while(1)
  40. {
  41. cout<<"x="<<x<<"\n";
  42. cout<<"y="<<y<<"\n";
  43. cout<<"\ta[x][y]="<<A[x][y]<<"\n\n";
  44. nrap[x][y]++;
  45. if(nrap[x][y] == 2)
  46. if(A[x][y] < minim)
  47. minim = A[x][y];
  48. if(nrap[x][y] == 3)//deja ne repetam prea mult
  49. return minim;
  50. //sunttem la coordonatele (x,y)
  51. int next_x, next_y;
  52. int x2, y2;
  53. int dif_min = 2000000000;
  54. for(int k=0;k<4;++k)
  55. {
  56. x2 = x + dx[k];
  57. y2 = y + dy[k];
  58. if(InMat(x2,y2,n,m))
  59. {
  60. if(modul(A[x2][y2]-A[x][y]) < dif_min)
  61. {
  62. dif_min = modul(A[x2][y2]-A[x][y]);
  63. next_x = x2;
  64. next_y = y2;
  65. }
  66. else
  67. if(modul(A[x2][y2]-A[x][y]) == dif_min && A[x2][y2]<A[next_x][next_y])
  68. {
  69. dif_min = modul(A[x2][y2]-A[x][y]);
  70. next_x = x2;
  71. next_y = y2;
  72. }
  73. }
  74. }
  75. x = next_x;
  76. y = next_y;
  77. }
  78. }
  79.  
  80. int main()
  81. {
  82. int a[100][100],n,m,L,C;
  83. cout<<"n="; cin>>n;
  84. cout<<"m="; cin>>m;
  85. for(int i=1;i<=n;++i)
  86. for(int j=1;j<=m;++j)
  87. cin>>a[i][j];
  88.  
  89. for(int i=1;i<=n;++i)
  90. {
  91. for(int j=1;j<=m;++j)
  92. cout<<a[i][j]<<" ";
  93. cout<<"\n";
  94. }
  95.  
  96. cout<<"L="; cin>>L;
  97. cout<<"C="; cin>>C;
  98.  
  99. cout<<"sol="<<PunctulB(n,m,a,L,C);
  100. return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement