写作绅士,读作丧尸 X岛揭示板
顺猴者昌 逆猴者亡 首页版规 |用户系统 |移动客户端下载 | 丧尸路标 | | 常用图串及路标 | 请关注 公众号:【矛盾苇草】| 人,是会思考的芦苇
常用串:·豆知识·跑团板聊天室·公告汇总串·X岛路标

[只看PO]No.61629147 - 无标题 - 技术宅


•程序语言、压制投稿、视频制作以及各计算机领域的技术问题
•我觉得还是CSDN靠谱一点
•本版发文间隔为15秒。

无标题 无名氏 2024-03-14(四)20:33:12 ID:WKe4ROY [举报] [订阅] [返回主串] No.61629147 [回应] 管理
大佬们救命
肥是一个小白,刚刚学完C语言,正在学习结构体和排序,我刚刚敲了一段代码,和样例几乎一模一样,但是我的会跑出来137,内存超限,但是样例就没有这个问题,为什么,代码串内,拜托了,找的要崩溃了
无标题 无名氏 2024-03-14(四)20:33:32 ID:WKe4ROY (PO主) [举报] No.61629151 管理
我的
#include <iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
struct student{
int id;
vector<int>chengji;
};
bool panduan(const student &a,const student &b){
int i;
for(i=0;i<7;i++)
{ if(a.chengji[i]!=b.chengji[i]){return a.chengji[i]!=b.chengji[i];}}

return a.id<b.id;
}
int main(){
int n,i,j;
cin>>n;
vector<student>students(n);
for(i=0;i<n;i++)
{
students[i].id=i+1;
students[i].chengji.resize(7);

for(j=0;j<6;j++)
{
int chengji;
cin>>chengji;
students[i].chengji[j]=chengji;}
char chengji;
cin>>chengji;
if(chengji=='A')students[i].chengji4[0,6]=4;
else if(chengji=='B')students[i].chengji6[0,6]=3;
else if(chengji=='C')students[i].chengji6[0,6]=2;
else students[i].chengji4[0,6]=1;
}
sort(students.begin(),students.end(),panduan);
for(i=0;i<n;i++)
cout<<students[i].id<<" ";
return 0;
}
无标题 无名氏 2024-03-14(四)20:34:33 ID:WKe4ROY (PO主) [举报] No.61629168 管理
样例

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct Student {
int id;
vector<int> grades;
};

bool compare(const Student &a, const Student &b) {
for (int i = 0; i < 7; i++) {
if (a.grades[i] != b.grades[i]) {
return a.grades[i] > b.grades[i];
}
}
return a.id < b.id;
}

int main() {
int N;
cin >> N;

vector<Student> students(N);
for (int i = 0; i < N; i++) {
students[i].id = i + 1;
students[i].grades.resize(7);

// 读取除微机课外的六门科目成绩
for (int j = 0; j < 6; j++) {
int grade;
cin >> grade;
students[i].grades[j] = grade;
}

// 读取微机课成绩字符
char grade;
cin >> grade;
if (grade == 'A') students[i].grades1[0,6] = 4;
else if (grade == 'B') students[i].grades6[0,6] = 3;
else if (grade == 'C') students[i].grades6[0,6] = 2;
else students[i].grades2[0,6] = 1;
}

sort(students.begin(), students.end(), compare);

for (int i = 0; i < N; i++) {
cout << students[i].id << " ";
}

return 0;
}
无标题 无名氏 2024-03-14(四)20:36:08 ID:WKe4ROY (PO主) [举报] No.61629187 管理
下面的部分
if(chengji=='A')students[i].chengji【6】=4;
else if(chengji=='B')students[i].chengji【6】=3;
else if(chengji=='C')students[i].chengji【6】=2;
else students[i].chengji【6】=1;
无标题 无名氏 2024-03-14(四)20:37:08 ID:WKe4ROY (PO主) [举报] No.61629197 管理
因为英文会r就用中文打了
看AI说是我没静态定义,前思后想自己和样例差在哪了,怎么都想不出来,半个小时了,要炸了
无标题 无名氏 2024-03-14(四)20:52:01 ID:WKe4ROY (PO主) [举报] No.61629366 管理
>>No.61629308
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct student{
int id;
vector<int>chengji;
};
bool panduan(const student &a,const student &b){
int i;
for(i=0;i<7;i++)
{ if(a.chengji[i]!=b.chengji[i]){return a.chengji[i]!=b.chengji[i];}}

return a.id<b.id;
}
int main(){
int n,i,j;
cin>>n;
vector<student>students(n);
for(i=0;i<n;i++)
{
students[i].id=i+1;
students[i].chengji.resize(7);

for(j=0;j<6;j++)
{
int ch;
cin>>ch;
students[i].chengji[j]=ch;}
char ch;
cin>>ch;
if(ch=='A')students[i].chengji4[0,6]=4;
else if(ch=='B')students[i].chengji0[0,6]=3;
else if(ch=='C')students[i].chengji5[0,6]=2;
else students[i].chengji3[0,6]=1;
}
sort(students.begin(),students.end(),panduan);
for(i=0;i<n;i++)
cout<<students[i].id<<" ";
return 0;
}
改了,没有用(;´Д`)
无标题 无名氏 2024-03-14(四)21:01:54 ID:WKe4ROY (PO主) [举报] No.61629493 管理
努力了一小时都没找到问题的小肥,决定放弃
无标题 无名氏 2024-03-14(四)21:11:04 ID:WKe4ROY (PO主) [举报] No.61629611 管理
>>No.61629571
问AI他说这两段代码功能一样,就是命名方式不同
想不明白,为什么功能一样我的会跑超时
无标题 无名氏 2024-03-14(四)21:30:45 ID:WKe4ROY (PO主) [举报] No.61629896 管理
CSDN给了我解决办法,如果vector动态分配内存超限,那就不要动态内存,直接定义一个数值为十万的数组

UP主: