写了一个简单的,不知道是否符合你的要求。
#include
#include
#include
// 矩阵维数
#define N 4
// 存放随机生成的矩阵
int matrix[N][N] = {0};
// 存放所求的来自不同行不同列的最小数
int leastNum[N] = {0};
int main()
{
int i, j;
int n = 4; // 最小数的个数,显然小于等于矩阵的维数N
int count = 0;
int min = 0;
int row = 0; // 记录已经产生过最小数的行标识位
int column = 0; // 记录已经产生过最小数的列标识位
int x, y;
/* 生成并打印随机矩阵 */
srand((unsigned int)time(NULL));
for (i=0; i{
for (j=0; j{
matrix[i][j] = rand();
printf("%12d", matrix[i][j]);
}
printf("\n");
}
printf("\n The least numbers are:\n");
while(count < n)
{
/* 遍历求满足条件的最小数,并记录下坐标 */
min = 0x7fffffff;
for (i=0; ifor (j=0; j {
if (((1<((1< (matrix[i][j] < min))
{
min = matrix[i][j];
x = i;
y = j;
}
}
/* 记录找到的最小数,并标记该最小数的行列位置 */
leastNum[count++] = min;
row = row | 1<column = column | 1< /* 打印输出最小数 */
printf("%12d", min);
}
printf("\n");
return 0;
}
mark一下。坐等大神回答。顺便问楼主几个问题。问题是这个演化算法啊,楼主有资料参考下不?贪心算法只能求得局部最优解,行不通。