标签:坐标系 距离 algo while name tor problem color namespace
哦,今天学了结构体哦,先贴代码吧,搞懂了再说
#include <algorithm> #include <iostream> #include <string.h> using namespace std; const int N=50; struct stu{ char a[10]; int b; }; stu ch[N]; bool cmp(stu a1, stu b1) { int k=strcmp(a1.a, b1.a); if(k>0) return false; if(k<0) return true; else return a1.b < b1.b; } int main() { int n; cin >> n; for(int i=0; i<n; i++) cin >> ch[i].a >> ch[i].b; sort(ch, ch+n, cmp); for(int i=0; i<n; i++) cout << ch[i].a << " " << ch[i].b << endl; return 0; }
#include <algorithm> #include <iostream> #include <string.h> using namespace std; const int N=50; struct stu{ int a, b; bool operator < (const stu& other) const { return a == other.a ? b < other.b : a < other.a; } }; stu p[N]; int main(){ int n; cin >> n; for(int i=0; i<n; i++) cin >> p[i].a >> p[i].b; sort(p, p+n); for(int i=0; i<n; i++) cout << p[i].a << " " << p[i].b << endl; return 0; }
由此强行做一题水题实践
在一个平面坐标系上有很多的点,你的任务是将它们按到原点的距离从近到远排序。
输入包含多组数据。每组数据第一行一个n,代表点的数量。接下来有n行,每行两个整数x,y,代表点的坐标。(n<=1000,0<=x,y<=10000)
对于每组数据,输出n行,每行两个整数,空格隔开。如果出现距离一样的,优先输出x坐标小的。
3 1 2 2 3 3 2
1 2 2 3 3 2
#include<iostream> #include<algorithm> using namespace std; struct stu{ int a, b; }; stu ch[1002]; bool cmp(stu x, stu y){ if(x.a*x.a+x.b*x.b == y.a*y.a+y.b*y.b) return x.a < y.a; return x.a*x.a+x.b*x.b < y.a*y.a+y.b*y.b; } int main() { int n; while(cin>>n) { for(int i=0; i<n; i++) cin >> ch[i].a>> ch[i].b; sort(ch, ch+n, cmp); for(int i=0; i<n; i++) cout << ch[i].a << " " <<ch[i].b << endl; } return 0; }
标签:坐标系 距离 algo while name tor problem color namespace
原文地址:http://www.cnblogs.com/tony-/p/6092157.html