342: 变位词
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int n,i;
char a[100],b[100];
cin>>n;
for(i=0;i<n;i++){
cin>>a>>b;
int f=strlen(a);
int l=strlen(b);
int flag=0;
int d[26]={0},h[26]={0};
if(f!=l) cout<<"No"<<endl;
else{
for(int j=0;j<f;j++){
d[a[j]-'a']++;
h[b[j]-'a']++;
}
for(int j=0;j<26;j++){
if(d[j]!=h[j])
flag++;
}
if(flag>0)
cout<<"No"<<endl;
else cout<<"Yes"<<endl;
}
}
return 0;
}
413: Quick Sort
#include<iostream>
using namespace std;
void quicksort(int left,int right,int *arr){
if(left>=right) return;
int i,j,t;
i=left;
t=arr[left];
j=right;
while(i<j){
while(i<j&&arr[j]>=t){
j--;
}
arr[i]=arr[j];
while(i<j&&t>=arr[i]){
i++;
}
arr[j]=arr[i];
}
arr[i]=t;
quicksort(left,i,arr);
quicksort(i+1,right,arr);
}
int main(){
int n;
cin>>n;
int a[n],i;
for(i=0;i<n;i++)
cin>>a[i];
quicksort(0,n-1,a);
for(i=0;i<n;i++)
cout<<a[i]<<' ';
cout<<endl;
return 0;
}
446: 合并排序
#include"iostream"
#include"stdio.h"
#include"cmath"
#include"cstring"
#include"algorithm"
using namespace std;
void merge(int a[], int left, int mid, int right, int temp[])
{
int i = left;
int j = mid + 1; //避免重复比较a[mid]
int t = 0;
while (i <= mid && j <= right) //数组a[left,mid]与数组(mid,right]均没有全部归入数组temp中去
{
if (a[i] <= a[j]) //如果a[i]小于等于a[j]
temp[t++] = a[i++]; //则将a[i]的值赋给temp[k],之后i,k各加一,表示后移一位
else
temp[t++] = a[j++]; //否则,将a[j]的值赋给temp[k],j,k各加一
}
/*表示数组a(mid,right]已经全部归入temp数组中去了,而数组a[left,mid]还有剩余 */
while (i <= mid)
temp[t++] = a[i++]; //将数组a[left,mid]剩下的值,逐一归入数组temp
while (j <= right) //表示数组a[left,mid]已经全部归入到temp数组中去了,而数组(mid,high]还有剩余
temp[t++] = a[j++]; //将数组a[mid,high]剩下的值,逐一归入数组temp
for (i = 0; i < t; i++) //将归并后的数组的值逐一赋给数组a[left,right]
a[left + i] = temp[i];
}
void sort(int temp[], int a[], int left, int right)
{
if (left < right)
{
int mid = left + (right - left) / 2;
sort(temp, a, left, mid); //先把左边排序
sort(temp, a, mid + 1, right); //右边排序
merge(a, left, mid, right, temp); //合并到一起
}
}
int main()
{
int num;
cin >> num;
int a[1000] = { 0 };
for (int i = 0; i < num; i++)
{
cin >> a[i];
}
int temp[1000] = { 0 };
sort(temp, a, 0, num - 1);
int i;
for (i = 0; i < num - 1; i++)
{
if ((i + 1) % 10 == 0)
cout << a[i] << endl;
else
cout << a[i] << " "; //这里是两个空格
}
cout << a[i] << endl;
}
493: PostOffice
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
int main()
{
int x[10000], y[10000];
int n, i, sum = 0;
cin >> n;
for (i = 0; i < n; i++)
{
cin >> x[i] >> y[i];
}
sort(x, x + n);
sort(y, y + n);
int X = x[n / 2], Y = y[n / 2];
for (i = 0; i < n; i++)
{
sum += abs(x[i] - X) + abs(y[i] - Y);
}
cout << sum << endl;
return 0;
}
794: 最近对问题
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
double Distance(double x1,double y1,double x2,double y2)
{
double dis=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));//两点之间的距离公式
return dis;
}
int main()
{
int n,i,j,m;
double x1[1001],y1[1001];
cin>>n;
while(n--)
{
cin>>m;
for(i=0;i<m;i++)
{
cin>>x1[i]>>y1[i];
}
double min=99999999;
double t;
for(i=0;i<m;i++)
{
for(j=i+1;j<m;j++)
{
t=Distance(x1[i],y1[i],x1[j],y1[j]);
if(t<min)
{
min=t;
}
}
}
printf("%.4lf\n",min);
}
return 0;
}