新手刷PTA最好吃的月饼有两个测试点怎么都过不去,请求大佬帮忙看看

c0dezera 2019-12-25 02:10:33
半夜两点了 测试点过不了睡不着啊
题目截图

提交结果

下面是我的代码
#include<stdio.h>
int main() {
int N, M;
scanf("%d %d", &N, &M);//N列,M行
int a[1000][100] = {0};
int i = 0;
int j = 0;
int b[100] = {0};
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
scanf("%d", &a[i][j]);//数据输入
}
}
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
b[i] += a[j][i];//b[i]为第i种月饼销量
}
}
int max = b[0];
for (i = 0; i < N; i++) //遍历数组,找出最大值
{
if (b[i] > max)max = b[i];
}
printf("%d\n", max);//输出最大值
int c = 0;
for (i = 0; i < N; i++) //求冠军是否唯一
{
if (b[i] == max)c++;
}
for (i = 0; i < N; i++) //输出冠军月饼编号
{
if (b[i] == max) {
printf("%d", i+1);
c--;
if (c > 0)printf(" ");
}
}
return 0;
}

非常感谢!
...全文
227 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
c0dezera 2019-12-28
  • 打赏
  • 举报
回复
引用 10 楼 遇见女神的回复:
[quote=引用 9 楼 qq_46068469 的回复:]
[quote=引用 8 楼 遇见女神的回复:][quote=引用 3 楼 qq_46068469 的回复:]
[quote=引用 1 楼 遇见女神的回复:]按照题目要求有N<=1000,你只定义b[100],少了个0啊。

我改成1000了 最后一个测试点还是错的 汗[/quote]
你定义的a[1000][100],数组的行和列的数字是相反的,应是a[100][1000]。[/quote]
没反吧[/quote]
再仔细看题目,列是种类数,是N,N是<=1000,你定义的数组的列数是多少?[/quote] 通过了!非常感谢你!
遇见女神 2019-12-26
  • 打赏
  • 举报
回复
引用 9 楼 qq_46068469 的回复:
[quote=引用 8 楼 遇见女神的回复:][quote=引用 3 楼 qq_46068469 的回复:]
[quote=引用 1 楼 遇见女神的回复:]按照题目要求有N<=1000,你只定义b[100],少了个0啊。

我改成1000了 最后一个测试点还是错的 汗[/quote]
你定义的a[1000][100],数组的行和列的数字是相反的,应是a[100][1000]。[/quote]
没反吧[/quote]
再仔细看题目,列是种类数,是N,N是<=1000,你定义的数组的列数是多少?
c0dezera 2019-12-26
  • 打赏
  • 举报
回复
引用 8 楼 遇见女神的回复:
[quote=引用 3 楼 qq_46068469 的回复:]
[quote=引用 1 楼 遇见女神的回复:]按照题目要求有N<=1000,你只定义b[100],少了个0啊。

我改成1000了 最后一个测试点还是错的 汗[/quote]
你定义的a[1000][100],数组的行和列的数字是相反的,应是a[100][1000]。[/quote] 没反吧
遇见女神 2019-12-25
  • 打赏
  • 举报
回复
引用 3 楼 qq_46068469 的回复:
[quote=引用 1 楼 遇见女神的回复:]按照题目要求有N<=1000,你只定义b[100],少了个0啊。

我改成1000了 最后一个测试点还是错的 汗[/quote]
你定义的a[1000][100],数组的行和列的数字是相反的,应是a[100][1000]。
c0dezera 2019-12-25
  • 打赏
  • 举报
回复
引用 5 楼 自信男孩的回复:
你的测试点没通过,看一下有没有运行时间的要求?
是符合运行时间要求的,就是一个测试点答案错误
  • 打赏
  • 举报
回复

#include <stdio.h>

int main()
{
int N, M, A[1000] = {0}, i, j, x = 0, p = 0;

scanf("%d%d", &N, &M);
while(M--)
for (i = 0; i < N; (A[i++] += j) > x ? x = A[p = i - 1] : 0) scanf("%d", &j);
printf("%d\n%d", x, p + 1);
while (++p < N) if (A[p] == x) printf(" %d", p + 1);
puts("");

return 0;
}

自信男孩 2019-12-25
  • 打赏
  • 举报
回复
你的测试点没通过,看一下有没有运行时间的要求?
自信男孩 2019-12-25
  • 打赏
  • 举报
回复
#include<stdio.h>
#include <stdlib.h>

int main()
{
int **mooncake, N, M, *amount;
int i, j;
int max, flag;

scanf("%d%d", &N, &M);


mooncake = (int **)malloc(sizeof(int *) * M);
if (!mooncake)
exit(0);
amount = (int *)malloc(sizeof(int) * N);
if (!amount)
exit(0);

for (i = 0; i < M; i++) {
mooncake[i] = (int *)malloc(sizeof(int) * N);
if (!mooncake[i])
exit(0);
}

for (i = 0; i < M; i++) {
for (j = 0; j < N; j++)
scanf("%d", &mooncake[i][j]);
}

max = -1;
for (i = 0; i < N; i++) {
amount[i] = 0;
for (j = 0; j < M; j++)
amount[i] += mooncake[j][i];
if (max < amount[i])
max = amount[i];
}

printf("%d\n", max);
flag = 0;
for (i = 0; i < N; i++) {
if (max == amount[i] && flag == 0) {
printf("%d", i+1);
flag = 1;
} else if (flag == 1) {
printf(" %d", i+1);
}
}
/*
int N, M;
scanf("%d %d", &N, &M);//N列,M行
int a[1000][100] = {0};
int i = 0;
int j = 0;
int b[100] = {0};

for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
scanf("%d", &a[i][j]);//数据输入
}
}
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
b[i] += a[j][i];//b[i]为第i种月饼销量
}
}
int max = b[0];
for (i = 0; i < N; i++) //遍历数组,找出最大值
{
if (b[i] > max)max = b[i];
}
printf("%d\n", max);//输出最大值
int c = 0;
for (i = 0; i < N; i++) //求冠军是否唯一
{
if (b[i] == max)c++;
}
for (i = 0; i < N; i++) //输出冠军月饼编号
{
if (b[i] == max) {
printf("%d", i+1);
c--;
if (c > 0)printf(" ");
}
}
*/
return 0;
}

试一下这个
供参考~
c0dezera 2019-12-25
  • 打赏
  • 举报
回复
引用 1 楼 遇见女神的回复:
按照题目要求有N<=1000,你只定义b[100],少了个0啊。
我改成1000了 最后一个测试点还是错的 汗
c0dezera 2019-12-25
  • 打赏
  • 举报
回复
引用 1 楼 遇见女神的回复:
按照题目要求有N<=1000,你只定义b[100],少了个0啊。
卧槽,谢谢大佬,谢谢谢谢
遇见女神 2019-12-25
  • 打赏
  • 举报
回复
按照题目要求有N<=1000,你只定义b[100],少了个0啊。
#### 收益: 学习《optee系统开发精讲 》套餐的收益如下:1、全体系的掌握optee的核心知识点(多核多线程、启动流程、各类API、TA/PTA/STA、driver、service、各类设计思想、内存管理、中断管理...);2、掌握TEE OS的设计核心思想(不限与optee,对其它TEE也是如此),能够进入软件架构层次的各项设计;3、快速熟悉大系统软件的各项组件,能够进行大系统软件之间的设计或排查问题4、学习和理解理解Armv8/Armv9架构、Trustzone架构5、技术水平提升N个level, 掌握快速的学习方法;#### 课程简介和大纲 该课程包含但不限与以下章节:optee的组件介绍optee os启动流程optee os的初始化流程optee os线程向量表及其作用进入optee os的八种方式optee os的异常向量表和设计模型optee os对irq中断的处理optee os对fiq中断的处理optee os的内存管理optee os的MMU的使用optee os的根密钥(信任根)optee os的RPC机制optee os的存储系统optee os的SFS系统optee os的RPMB机制的实现optee os的Timer实现optee os中实现的GP APIoptee os中的系统调度optee os中密码学函数的支持optee os中的线程调度CA/TA的开发模型optee os中的serviceoptee os中的 PTAoptee os中的 secure driveroptee os中的 Early TAoptee中spinlock的实现原理详解optee中mutex的实现方式optee的栈指针和栈内存的介绍optee中使用虚函数(平台客制化)的设计模型共享内存的介绍optee os的标准错误码TA的签名和验签TA链接静态库的方法

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧