注册 登录
编程论坛 C++教室

C++,程序为什么出现“该内存不能为 Read”,完全不能运行

BCCN3968 发布于 2014-12-07 19:48, 405 次点击
#include<iostream>using namespace std;void main(){ int A[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int i,j,k,l,n; for(i=0;i<4;i++) {n=A[i][0];  for(j=0;j<4;j++)   if(n>A[i][j]){    n=A[i][j];    l=j;   }   for(j=0;j<4;j++)    if(n>A[j][l]){     n=A[j][l];     k=j;   }     if(k==i) cout<<A[k][l]<<endl;    }}

就是找出数组中既是所在行的最小值,又是所在列的最小值,并打印出他们在矩阵中的位置








我自己明白了。。。。

[ 本帖最后由 BCCN3968 于 2014-12-7 19:55 编辑 ]
2 回复
#2
rjsp2014-12-08 09:11
根据你的代码修改了一下(逻辑是否正确我不管,因为你没考虑同一行有多个最小值的情况)

程序代码:
#include <iostream>
using namespace std;

int main()
{
    const int A[4][4] = { {  1,  2,  3,  4 }
                        , {  5,  6,  7,  8 }
                        , {  9, 10, 11, 12 }
                        , { 13, 14, 15, 16 } };

    ////////////////////////////////////

    const size_t rsize = sizeof(A)/sizeof(A[0]);
    const size_t csize = sizeof(A[0])/sizeof(A[0][0]);

    for( size_t r=0; r!=rsize; ++r )
    {
        size_t c = 0;
        for( size_t i=1; i!=csize; ++i )
        {
            if( A[r][i] < A[r][c] )
                c = i;
        }

        size_t j;
        for( j=0; j!=rsize && A[j][c]>=A[r][c]; ++j );

        if( j == rsize )
            cout << "A[" << r << "][" << c << "] = " << A[r][c] << '\n';
    }
    cout << flush;

    return 0;
}

#3
wp2319572014-12-08 14:38
以下是引用BCCN3968在2014-12-7 19:48:14的发言:

#include<iostream>using namespace std;void main(){ int A[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int i,j,k,l,n; for(i=0;i<4;i++) {n=A[0];  for(j=0;j<4;j++)   if(n>A[j]){    n=A[j];    l=j;   }   for(j=0;j<4;j++)    if(n>A[j][l]){     n=A[j][l];     k=j;   }     if(k==i) cout<<A[k][l]<<endl;    }}

就是找出数组中既是所在行的最小值,又是所在列的最小值,并打印出他们在矩阵中的位置



麻烦注重一下代码格式   一片一片的代码  






我自己明白了。。。。
1