鱼C论坛

 找回密码
 立即注册
查看: 1293|回复: 1

[已解决]编程题9

[复制链接]
发表于 2021-11-19 15:06:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
【问题描述】

输入1 个正整数n(1<n<6)和n 阶整数矩阵a 中的元素,如果找到a 的鞍点(鞍点的元素值在该行上最大, 在该列上最小), 就输出它的下标及鞍点值;否则,输出none; (只要求输出a的第一个鞍点)&#65377;



【输入形式】

第一行,输入一个正整数,范围2~6

第二行开始,输入n阶整数矩阵,数据项用一个空格分开


【输出形式】

如果有鞍点,输出三个整数,分别代表第一个鞍点的行下标、列下标、鞍点值,它们之间用空格分隔;如果没有鞍点,输出:none



【样例输入】

4

1 7 4 1

4 8 3 6

1 6 1 2

0 7 8 9



【样例输出】

2 1 6
最佳答案
2021-11-19 17:27:52
int main()
{

        int n=0;
        scanf("%d",&n);
        fflush(stdin);
        int **a=new int*[n],*tmp=new int[n*n],(*rmax)[3]=(int(*)[3])(new int[3*n]),i=0,j=0;

        for (i = 0; i < n; i++)a[i]=tmp+i*n,\
                rmax[i][0]=rmax[i][1]=rmax[i][3]=0;

        for(i = 0; i < n; i++)
        {
                for (j = 0; j < n; j++)
                {
                        scanf("%d",&a[i][j]);
                }
                fflush(stdin);
        }


        for(i=0;i<n;i++)
        {
                rmax[i][0]=i;
                for(j=1;j<n;j++)
                {
                        if(a[rmax[i][0]][rmax[i][1]]<a[i][j])rmax[i][1]=j;
                }
                for(j=1;j<n;j++)
                {
                        if(a[rmax[i][0]][rmax[i][1]]>a[j][rmax[i][1]])break;
                }
                if(j==n)break;//if(j==n)rmax[i][2]=1;

        }
        if (n==i)
        {
                printf("none");
        }
        else
        {
                printf("%d %d %d",rmax[i][0],rmax[i][1],a[rmax[i][0]][rmax[i][1]]);
        }
        delete[] tmp;
        delete[] a;
        delete[] rmax;
        return 0;
}       
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
2 1 6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-19 17:27:52 | 显示全部楼层    本楼为最佳答案   
int main()
{

        int n=0;
        scanf("%d",&n);
        fflush(stdin);
        int **a=new int*[n],*tmp=new int[n*n],(*rmax)[3]=(int(*)[3])(new int[3*n]),i=0,j=0;

        for (i = 0; i < n; i++)a[i]=tmp+i*n,\
                rmax[i][0]=rmax[i][1]=rmax[i][3]=0;

        for(i = 0; i < n; i++)
        {
                for (j = 0; j < n; j++)
                {
                        scanf("%d",&a[i][j]);
                }
                fflush(stdin);
        }


        for(i=0;i<n;i++)
        {
                rmax[i][0]=i;
                for(j=1;j<n;j++)
                {
                        if(a[rmax[i][0]][rmax[i][1]]<a[i][j])rmax[i][1]=j;
                }
                for(j=1;j<n;j++)
                {
                        if(a[rmax[i][0]][rmax[i][1]]>a[j][rmax[i][1]])break;
                }
                if(j==n)break;//if(j==n)rmax[i][2]=1;

        }
        if (n==i)
        {
                printf("none");
        }
        else
        {
                printf("%d %d %d",rmax[i][0],rmax[i][1],a[rmax[i][0]][rmax[i][1]]);
        }
        delete[] tmp;
        delete[] a;
        delete[] rmax;
        return 0;
}       
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
2 1 6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 01:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表