本文主要是介绍数组——金子数——普通,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
某地区有 n 条(编号依次为 1 到 n)互不交叉的道路,每条道路上都有 m 个数字,其中 能被 8 整除的数称为金子数,这个数字表示其重量。
如下表是 3 条道路,每条道路中有 5 个数的一种可能情况。小华想在 n 条道路中走一条金子重量之和最大的道路,请编程帮他找出这条道路吧.
输入
输入共 n+1 行。
第 1 行两个整数 n 和 m,表示总共有 n 条道路,每条道路上有 m 个数。 接下来 n 行,每行 m 个正整数。
输出
输出共 1 行。 一个整数,表示金子重量之和最大的道路编号。
样例输入
复制样例数据3 5 13 24 17 8 23 1 2 3 4 5 16 2 16 4 8样例输出
3
这个题的思路无疑是用数组存数em.......没错就是这样=w=
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int m,n;
scanf("%d%d",&n,&m);
int a[n+5][m+5];
int b[n];
int i,j;
for(i=0;i<n;i++)//。。。。。。。。。。。清0
{
memset(a[i],0,sizeof(a[i]));
}
memset(b,0,sizeof(b));
for(i=0;i<n;i++)//。。。。。。。。。。。。存数
{
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
}
int sum=0;
for(i=0;i<n;i++)//。。。。。。。。。。开始计算每条道路上的金子数
{
for(j=0;j<m;j++)
{
if(a[i][j]%8==0)
{
b[i]+=a[i][j];
}
}
}
int max;
max=b[0];
for(i=1;i<n;i++)//。。。。。。。。。。。比较每一条路上的金子数,寻找最大的
{
if(max<b[i])
{
max=b[i];
}
}
for(i=0;i<n;i++)//。。。。。。。。。。。。吧最大的那条路选出来
{
if(max==b[i])
printf("%d",i+1);
}
return 0;
}
——李佳胥
这篇关于数组——金子数——普通的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!