C++程序 谁给我说明一下

来源:百度知道 编辑:UC知道 时间:2024/06/19 20:49:09
void Johnson(int b[4][2], int numRow,int numColumn)
{
int i, j, k;

int** num=new int*[numRow];
for (i=0; i<2; i++)
{
num[i]=new int[numColumn];
for (j=0; j<numColumn; j++)
{
num[i][j]=b[j][i];
}
}

int *resultSequence=new int[numColumn];
bool *chosenColumn=new bool[numColumn];
int s, t;
s=0; t=numColumn-1;

for(i=0; i<numColumn; i++) chosenColumn[i]=false;

for (i=0; i<numColumn; i++)
{
int minNum=MAXNUM;
int minColomn, isOneOrTwoRow;
for (j=0; j<numColumn; j++)
{
if(chosenColumn[j]) continue;
for (k=0; k<numRow; k++)
{
if(num[k][j]<minNum)
{
minNum=num[k][j];
minColomn=j;
isOneOrTwoRow=k+1;
}
}
}
chosenColumn[minColomn]=true;
if (isOneOrTwoRow==1)
{
resultSequence[s++]=minColom

程序流程分析如下,在注释里:
#include <iostream.h>
#define MAXNUM 20

int main(int argc, char *argv[])
{
void Johnson(int b[4][4], int numRow,int numColumn) ;
int numRow =4 , numColumn =4;
int b[4][4] = {{1,3,878,2},{66,44,54,45}, {76,34,42, 12},{5 ,76,89,80}};
Johnson( b, numRow, numColumn) ;
return 0;
}

//numRow来表示形参b的行数,numColumn来表示形参b的列数
void Johnson(int b[4][4], int numRow,int numColumn)
{
int i, j, k;

int** num=new int*[numRow]; //将形参b[][]复制到num[][]
for (i=0; i<numRow; i++) //此行原来为 i<2 ,有误
{
num[i]=new int[numColumn];
for (j=0; j<numColumn; j++)
{
num[i][j]=b[j][i];
}
}

int *resultSequence=new int[numColumn]; //用来保存找到列数的数组
bool *chosenColumn=new bool[numColumn]; //用来判断该列是否需要比较
int s, t;
s=0; t=numColumn-1;

for(i=0; i<numColumn; i++) chosenColumn[i]=false;

for (i=0; i&l