_ACM题_本机运行没错_提交一直WA
求助_ACM题_本机运行没错_提交一直WA
各位大侠,帮忙看一下哪出错了
题目是:
题目描述:
一个复数(x+iy)集合,两种操作作用在该集合上:
1、Pop 表示读出集合中复数模值最大的那个复数,如集合为空 输出 empty ,不为空就输出最大的那个复数并且从集合中删除那个复数,再输出集合的大小SIZE;
2 Insert a+ib 指令(a,b表示实部和虚部),将a+ib加入到集合中 ,输出集合的大小SIZE;
最开始要读入一个int n,表示接下来的n行每一行都是一条命令。
输入:
输入有多组数据。
每组输入一个n(1<=n<=1000),然后再输入n条指令。
输出:
根据指令输出结果。
样例输入:
3
Pop
Insert 1+i2
Pop
样例输出:
empty
SIZE = 1
1+i2
SIZE = 0
提示:
模相等的输出b较小的复数。
a和b都是非负数。
我的代码是:
题目链接:http://ac.jobdu.com/problem.php?id=1178
九度OJ,题号1178
------解决方案--------------------
本机运行没错但提交错误,一般就是没考虑特殊情况,ACM题都这样
------解决方案--------------------
本机运行没错,你只过了题目上的几个样例吧,你多找几个样例试试
------解决方案--------------------
楼主你忽略了一个问题, a 与 b 不会只是 一位数吧。
------解决方案--------------------
楼主可以这样
各位大侠,帮忙看一下哪出错了
题目是:
题目描述:
一个复数(x+iy)集合,两种操作作用在该集合上:
1、Pop 表示读出集合中复数模值最大的那个复数,如集合为空 输出 empty ,不为空就输出最大的那个复数并且从集合中删除那个复数,再输出集合的大小SIZE;
2 Insert a+ib 指令(a,b表示实部和虚部),将a+ib加入到集合中 ,输出集合的大小SIZE;
最开始要读入一个int n,表示接下来的n行每一行都是一条命令。
输入:
输入有多组数据。
每组输入一个n(1<=n<=1000),然后再输入n条指令。
输出:
根据指令输出结果。
样例输入:
3
Pop
Insert 1+i2
Pop
样例输出:
empty
SIZE = 1
1+i2
SIZE = 0
提示:
模相等的输出b较小的复数。
a和b都是非负数。
我的代码是:
- C/C++ code
#include <iostream> #include <algorithm> #include <string> #include <vector> #include <cstdio> using namespace std; struct info { int x; int y; }; bool cmp(const info &a,const info &b) { if((a.x)*(a.x)+(a.y)*(a.y)==(b.x)*(b.x)+(b.y)*(b.y)) return a.y>b.y; else return (a.x)*(a.x)+(a.y)*(a.y)<(b.x)*(b.x)+(b.y)*(b.y); }; int main() { string s,t; char q[1000]; int n; vector<info> v; info in; while(cin>>n) { getchar(); while(n--) { gets(q); t=q; if(t[0]=='I') { in.x=t[7]-'0'; in.y=t[10]-'0'; v.push_back(in); sort(v.begin(),v.end(),cmp); cout<<"SIZE = "<<v.size()<<endl; } else { if(v.size()==0) cout<<"empty"<<endl; else { vector<info>::iterator it=v.end(); it--; cout<<(*it).x<<"+i"<<(*it).y<<endl; v.erase(it); cout<<"SIZE = "<<v.size()<<endl; } } } v.clear(); } }
题目链接:http://ac.jobdu.com/problem.php?id=1178
九度OJ,题号1178
------解决方案--------------------
本机运行没错但提交错误,一般就是没考虑特殊情况,ACM题都这样
------解决方案--------------------
本机运行没错,你只过了题目上的几个样例吧,你多找几个样例试试
------解决方案--------------------
楼主你忽略了一个问题, a 与 b 不会只是 一位数吧。
------解决方案--------------------
楼主可以这样
- C/C++ code
scanf("%s", str); if (str[0] = 'I') { scanf("%d+i%d",&in.x,&in.y); } else { }