Advertisement
CosminVarlan

Admitere_FII_2018_II_3_b

Jun 21st, 2019
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. #include <iostream>
  2.  
  3.  
  4. using namespace std;
  5.  
  6. int abs(int x){
  7.     if (x>0) return x;
  8.     else return -x;
  9. }
  10.  
  11.  
  12.  
  13. int cauta(int a[4][5], int n, int m, int x, int y){
  14.     x--;
  15.     y--;
  16.     int px=x, py=y;
  17.     while(1)
  18.     {
  19.         int nx,ny,ndelta=2000000000;
  20.         if (x>0 && abs(a[x-1][y]-a[x][y])<ndelta)
  21.         {
  22.             nx = x-1;
  23.             ny = y;
  24.             ndelta = abs(a[x-1][y]-a[x][y]);
  25.         }
  26.         if (y>0 && (abs(a[x][y-1]-a[x][y])<ndelta || abs(a[x][y-1]-a[x][y])==ndelta && a[x][y-1]<a[nx][ny]))
  27.         {
  28.             nx = x;
  29.             ny = y-1;
  30.             ndelta = abs(a[x][y-1]-a[x][y]);
  31.         }
  32.         if (x<m-1 && (abs(a[x+1][y]-a[x][y])<ndelta || abs(a[x+1][y]-a[x][y])==ndelta && a[x+1][y]<a[nx][ny]))
  33.         {
  34.             nx = x+1;
  35.             ny = y;
  36.             ndelta = abs(a[x+1][y]-a[x][y]);
  37.         }
  38.         if (y<n-1 && (abs(a[x][y+1]-a[x][y])<ndelta || abs(a[x][y+1]-a[x][y])==ndelta && a[x][y+1]<a[nx][ny]))
  39.         {
  40.             nx = x;
  41.             ny = y+1;
  42.             ndelta = abs(a[x][y+1]-a[x][y]);
  43.         }
  44.         if (nx==px && ny==py) {
  45.             if (a[x][y]<a[nx][ny]) return a[x][y];
  46.             else return a[nx][ny];
  47.         }
  48.         px=x;
  49.         py=y;
  50.         x=nx;
  51.         y=ny;
  52.  
  53.  
  54.  
  55.     }
  56. }
  57.  
  58.  
  59. int main()
  60. {
  61.     int m[4][5] = {{57, 51, 70, 72, 75},
  62.                    {56, 58, 60, 66, 77},
  63.                    {59, 54, 93, 90, 76},
  64.                    {88, 52, 61, 79, 68}};
  65.     cout << cauta(m,4,5,2,4);
  66.  
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement