题目一
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void sort(int a[], int n) {
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
if (a[i] > a[j]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
int main() {
int n;
scanf("%d", &n);
int* start = (int*)malloc(sizeof(int) * n);
int* end = (int*)malloc(sizeof(int) * n);
for (int i = 0; i < n; i++)
scanf("%d%d", &start[i], &end[i]);
sort(start, n); //开始越早排在越前面
sort(end, n); //结束越早排在越前面
int j = 0;
int sum = 0; //会场个数
for (int i = 0; i < n; i++) {
if (start[i] < end[j])
sum++; //如果开始时间小于结束时间则另开辟一个会场
else
j++; //否则和下一个结束时间进行比较
}
printf("%d", sum);
return 0;
}
题目二
题目三
思路:按要求排序之后,输出m块矿石所卖的最大价格。
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
typedef struct node{
int w;//矿石的重量
int p;//可以卖的价钱
}goods;
goods g[10005];
int cmp(const void* a,const void* b) //cmp 他决定每次都会搬重量最小的那块。如果恰好有几块重量相等,那就在这几块中挑选价值最高的带走
{
goods* x=(goods*)a;
goods* y=(goods*)b;
if(x->w==y->w)
return y->p-x->p;
else
return x->w-y->w;
}
int main(){
int n,m;
int i;
while(scanf("%d%d",&n,&m)!=EOF){
int sum=0;
for(i=0;i<n;i++){
scanf("%d%d",&g[i].w,&g[i].p);
}
qsort(g,n,sizeof(goods),cmp);
for(i=0;i<m;i++){
sum=sum+g[i].p;
}
printf("%d\n",sum);
}
return 0;
}
题目四
> #define _CRT_SECURE_NO_WARNINGS 1
> #include<stdio.h>
> #include<stdlib.h>
>
> int cmp1(const void* a, const void* b) {
> return *(int*)a - *(int*)b;//升序 } int cmp2(const void* a, const void* b) {
> return *(int*)b - *(int*)a;//降序 }
>
> int main() {
> int n;//序列数
> scanf("%d", &n);
> int p[n], p1[n];
> int times = 0;
>
> for (int i = 0; i < n; i++) {
> scanf("%d", &p[i]);
> p1[i] = p[i];
> }
>
> for (int i = 0; i < n - 1; i++) {
> qsort(p1, n, sizeof(int), cmp2);
> p1[0] = p1[0] + p1[1];
> times += p1[0] - 1;
> p1[1] = 0;
> }
> printf(" %d", times);
>
> times = 0;
> for (int i = 0; i < n - 1; i++) {
> qsort(p, n, sizeof(int), cmp1);
> p[0] = p[0] + p[1];
> times += p[0] - 1;
> p[1] = 100000;
> }
> printf("%d", times);
> return 0; }
题目五
#include <bits/stdc++.h>
using namespace std;
int a[1100];
int main() {
int n, k, t;
cin >> n >> k;
for (int i = 0; i <= k; i++) {
cin >> a[i];
}
int m = n, cnt = 0, flag = 0;
for (int i = 1; i < k; i++) {
if (n < a[i] || n < a[i + 1]) { //车最大距离也到不了加油站
cout << "No Solution!" << endl;
flag = 1;
break;
}
else {
m -= a[i]; //减去该加油站和上一个加油站的距离
if (m < a[i + 1]) { //判断不加油能不能到达下一个加油站
m = n;
cnt++;//加油次数
}
}
}
if (!flag) cout << cnt;
return 0;
}
One comment
独特的构思和新颖的观点,让这篇文章在众多作品中脱颖而出。