strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数
通过
#include <iostream> #include <string.h> #include <cmath> #include <vector> #include <algorithm> using namespace std; struct node { int id,de,cai; }; int cmp(node a,node b) { if(a.de+a.cai !=b.de+b.cai) return a.de+a.cai>b.de+b.cai; else return a.de!=b.de?a.de>b.de:a.id<b.id; } int main() { int N,L,H,M=0; cin>>N>>L>>H; vector<node> v[4]; node tmp; for(int i=0;i<N;i++) { cin>>tmp.id>>tmp.de>>tmp.cai; if(tmp.de>=H&&tmp.cai>=H) { M++; v[0].push_back(tmp); } if(tmp.de>=H&&tmp.cai>=L&&tmp.cai<H) { M++; v[1].push_back(tmp); } if(tmp.de <H&&tmp.cai <H&&tmp.de >=L&&tmp.cai >=L&&tmp.de >=tmp.cai ) { M++; v[2].push_back(tmp); } if(tmp.de <H&&tmp.de>=L&&tmp.cai>=L&&tmp.de<tmp.cai) { M++; v[3].push_back(tmp); } } cout<<M<<endl; for(int i=0;i<4;i++) { sort(v[i].begin(),v[i].end(),cmp); for(int j=0;j<v[i].size();j++) printf("%d %d %d ",v[i][j].id,v[i][j].de,v[i][j].cai); } return 0; }
出现段错误
#include <iostream> #include <string.h> #include <cmath> using namespace std; struct STU { int sno; int de; int cai; int total; }; int main() { int N,L,H,M=0; int ssno; int sde,scai; int ii[4]={0,0,0,0}; struct STU stu[4][10005]; cin>>N>>L>>H; for(int i=0;i<N;i++) { cin>>ssno>>sde>>scai; if(sde>=L&&scai>=L) { M++; if(sde>=H&&scai>=H) { stu[0][ii[0]].sno=ssno; stu[0][ii[0]].de=sde; stu[0][ii[0]].cai=scai; stu[0][ii[0]].total=sde+scai; ii[0]++; } else if(sde>=H&&scai<H) { stu[1][ii[1]].sno=ssno; stu[1][ii[1]].de=sde; stu[1][ii[1]].cai=scai; stu[1][ii[1]].total=sde+scai; ii[1]++; } else if(sde<H&&scai<H&&sde>=scai) { stu[2][ii[2]].sno=ssno; stu[2][ii[2]].de=sde; stu[2][ii[2]].cai=scai; stu[2][ii[2]].total=sde+scai; ii[2]++; } else { stu[3][ii[3]].sno=ssno; stu[3][ii[3]].de=sde; stu[3][ii[3]].cai=scai; stu[3][ii[3]].total=sde+scai; ii[3]++; } } } int j=0,k=0; struct STU s; for(int i=0;i<4;i++) { for(j=0;j<ii[i]-1;j++) { for(k=0;k<ii[i]-1-j;k++) { if((stu[i][k].total<stu[i][k+1].total)||(stu[i][k].total==stu[i][k+1].total&&stu[i][k].de<stu[i][k+1].de)||(stu[i][k].total==stu[i][k+1].total&&stu[i][k].de==stu[i][k+1].de&&stu[i][k].sno>stu[i][k+1].sno)) { s=stu[i][k]; stu[i][k]=stu[i][k+1]; stu[i][k+1]=s; } } } } cout<<M<<endl; for(int i=0;i<4;i++) for(j=0;j<ii[i];j++) cout<<stu[i][j].sno<<" "<<stu[i][j].de<<" "<<stu[i][j].cai<<endl; return 0; }