#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
if(a>b>c){
cout<<a<<" “<<b<<” “<<c;
}else
if(a>c>b){
cout<<a<<” “<<c<<” “<<b;
}else
if(b>a>c){
cout<<b<<” “<<a<<” “<<c;
}else
if(b>c>a){
cout<<b<<” “<<c<<” “<<a;
}else
if(c>a>b){
cout<<c<<” “<<a<<” “<<b;
}else
if(c>b>a){
cout<<c<<” “<<b<<” "<<a;
}
return 0;
}
不能连着写的!!!
举个例子:
想表示a > b > c,这样:
int a, b, c;
if (a > b && b > c)
cout << a << " " << b << " " << c;
谢谢
作为普及的蒟蒻只会用数组sort:
#include <bits/stdc++.h>
using namespace std;
long long a[4];
int main(){
cin>>a[1]>>a[2]>>a[3];
sort(a+1,a+1+3);
cout<<a[1]<<" "<<a[2]<<" "<<a[3];
}
+1
用我的速度更快:
#include <bits/stdc++.h>
using namespace std;
int a[3];
int main()
{
scanf("%d%d%d", &a[0], &a[1], &a[2]);
stable_sort(a, a + 3);
printf("%d %d %d", a[0], a[1], a[2]);
}
但是我的代码打的速度更快
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
if(a>b&&b>c){
cout<<a<<" “<<b<<” “<<c;
}else
if(a>c&&c>b){
cout<<a<<” “<<c<<” “<<b;
}else if(b>a&&a>c){
cout<<b<<” “<<a<<” “<<c;
}else if(b>c&&c>a){
cout<<b<<” “<<c<<” “<<a;
}else if(c>a&&a>b){
cout<<c<<” “<<a<<” “<<b;
}else if(c>b&&b>a){
cout<<c<<” “<<b<<” "<<a;
}
return 0;
}
我的运行速度更快,排序也更稳定!!!
错了
是升序排序还是降序排序啊?
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
void merge(int* a, int low, int mid, int hight) //合并函数
{
int* b = new int[hight - low + 1]; //用 new 申请一个辅助函数
int i = low, j = mid + 1, k = 0; // k为 b 数组的小标
while (i <= mid && j <= hight)
{
if (a[i] <= a[j])
{
b[k++] = a[i++]; //按从小到大存放在 b 数组里面
}
else
{
b[k++] = a[j++];
}
}
while (i <= mid) // j 序列结束,将剩余的 i 序列补充在 b 数组中
{
b[k++] = a[i++];
}
while (j <= hight)// i 序列结束,将剩余的 j 序列补充在 b 数组中
{
b[k++] = a[j++];
}
k = 0; //从小标为 0 开始传送
for (int i = low; i <= hight; i++) //将 b 数组的值传递给数组 a
{
a[i] = b[k++];
}
delete[]b; // 辅助数组用完后,将其的空间进行释放(销毁)
}
void mergesort(int* a, int low, int hight) //归并排序
{
if (low < hight)
{
int mid = (low + hight) / 2;
mergesort(a, low, mid); //对 a[low,mid]进行排序
mergesort(a, mid + 1, hight); //对 a[mid+1,hight]进行排序
merge(a, low, mid, hight); //进行合并操作
}
}
int main()
{
int n, a[100];
cout << "请输入数列中的元素个数 n 为:" << endl;
cin >> n;
cout << "请依次输入数列中的元素:" << endl;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
mergesort(a, 0, n-1);
cout << "归并排序结果" << endl;
for (int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
cout << endl;
return 0;
}
归并排序,小子!(转载
有一个音乐会的场地需要铺砖,假设场地是n∗m的矩形,小明有很多a∗a的地砖,现在小明想知道,要铺满整块地板(允许地砖覆盖的范围比场地的范围大),至少需要多少块a∗a的地砖。地砖不允许打碎,切割。
输入格式:
输入一行,包含三个正整数n,m,a 表示场地的长和宽,以及每个正方形地砖的边长。
输出格式:
输出一行,包含一个整数表示至少需要的地砖数量。
题目
那你代码就有问题啊!!!
Dangerous Syscall
我们还优化个啥?
这是一个关于计算铺砖数量的问题。给定场地的长和宽分别为 n 和 m,每块地砖的边长为 a,要铺满整块地板,至少需要的地砖数量可以通过以下公式计算:
int result = ceil((double)n / a) * ceil((double)m / a);
其中,ceil(x) 函数表示对 x 向上取整。例如,当 n=6,m=8,a=4 时,需要的地砖数量为 ceil(6/4)*ceil(8/4)=2*2=4。
下面是一个完整的 C++ 程序,可以解决这个问题:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n, m, a;
cin >> n >> m >> a;
long long result = ceil((double)n / a) * ceil((double)m / a);
cout << result << endl;
return 0;
}
是我的原因