-1

由于某种原因,我无法使该distance功能正常工作。有人可以向我解释我做错了什么吗?

主功能:

#include <iostream>
#include <cmath> 
using namespace std;

int distance(int**, int);

 int main()
 {
 int m;
 int goal [3][3] = { {1,2,3},{4,5,6},{7,8,0}};
 const int N = 3;
 int intial[N][N];
 cout << "Enter in values: \n";
 for(int i=0; i<3; i++)    //This loops on the rows.
{
    for(int j=0; j<3; j++) //This loops on the columns
    {
        cin >> intial[i][j];  
    }
}


 cout << goal[0][0] << "\n" ;
 m = distance(intial,N);
 system("PAUSE");
 return 0;
 }

曼哈顿距离计算!

int distance(int** array,int N)
 {

  int MSum = 0;
  for (int x = 0; x < N; x++){ //Transversing rows(i)
      for (int y = 0; y < N; y++) { //traversing colums (j)
        int value = array[x][y]; // sets int to the value of space on board
            if (value != 0) { // Don't compute MD for element 0
               int targetX = (value - 1) / N; // expected x-coordinate (row)
               int targetY = (value - 1) % N; // expected y-coordinate (col)
               int dx = x - targetX; // x-distance to expected coordinate
               int dy = y - targetY; // y-distance to expected coordinate
               MSum += abs(dx) +abs(dy);   
            }
        }

  }
  int m = MSum;
  return m;

 }
4

1 回答 1

1

就逻辑而言,这看起来基本上是正确的。您传入的数组应该与函数声明和实现兼容。这是一个示例声明:

int distance(int array[3][3],int N);
于 2014-02-08T02:44:55.947 回答