首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

简单有关问题请指点一下

2012-02-21 
简单问题请指点一下/*这个程序的目的是找出一个方正中行最大,列最小的数*/#include stdio.h #include s

简单问题请指点一下

 
/*这个程序的目的是找出一个方正中行最大,列最小的数*/
#include "stdio.h "
#include "stdlib.h "
#define   L   4/*假设是4行4列*/
#define   R   4
void   fun(int   p[L][R])
{       int   l[L],r[R],res[L][R];/*res数组用来放满足要求的数*/
        int   i,j,k,m,n;
        for(i=0;i <R;i++)/*在每一行中找出最大的数*/
              for(j=0;j <R-1;j++)
              {
                    for(m=0,n=j;m <R;m++)
                          if(p[i][n] <p[i][m])
                                n=m;
                    r[i]=p[i][m];
              }
        for(i=0;i <L;i++)/*在每一列中找出最小的数*/
              for(j=0;j <L-1;j++)
              {
                    for(m=0,n=j;m <L;m++)
                          if(p[n][i]> p[m][i])
                                n=m;
                    l[i]=p[m][i];
              }
        putchar( '\n ');
        for(i=0;i <L;i++)
              for(j=0;j <R;j++)
                    if(r[j]==l[i])/*如果先找的行中的数和列中的数想的话就满足要求*/
                    {       res[i][j]=r[j];
                            printf( "res[%d][%d]=%d\n ",i,j,r[j]);
                    }
}
void   main()
{       int   a[L][R],i,j;
        for(i=0;i <L;i++)
              for(j=0;j <R;j++)
                    a[i][j]=random(21);
        printf( "The   square   is:   \n\n\n ");/*输出随机方正*/
        for(i=0;i <L;i++)
        {
              for(j=0;j <R;j++)
              printf( "%d         ",a[i][j]);
              putchar( '\n ');
        }
        fun(a);
        getch();
}


[解决办法]
LZ的算法有问题,我根据LZ的意思修改了一下。不过大部分情况下是没有结果的,因为行最大了,列不一定最小。有时候会有多解。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctime>


#define L 4
#define R 4

void fun(int p[L][R])


{
bool flag = false;
int l[L],r[R];
int i,j,k,m;
for(i=0;i <R;i++)
for(j=0,m=0;j <L;j++)
{
if(p[i][m] <p[i][j])
m=j;
r[i]=p[i][m];
}
for(i=0;i <L;i++)
for(j=0,m;j <R;j++)
{
if(p[m][i]> p[j][i])
m=j;
l[i]=p[m][i];
}
putchar( '\n ');
for(i=0;i <L;i++)
for(j=0;j <R;j++)
if(r[j]==l[i])
{
flag = true;
printf( "res[%d][%d]=%d\n ",j,i,r[j]);
}
if(!flag) printf( "sorry, no solution! ");
}

void main()
{
int a[L][R],i,j;
srand((unsigned)time(0));
for(i=0;i <L;i++)
for(j=0;j <R;j++)
a[i][j]=rand()%21;
printf( "The square is: \n\n\n ");
for(i=0;i <L;i++)
{
for(j=0;j <R;j++)
printf( "%d\t ",a[i][j]);
putchar( '\n ');
}
fun(a);
getch();
}

热点排行
Bad Request.