坐电梯取砖石游戏

【描述】有一栋楼,共N层,有一座电梯可以从1楼上升到N楼,每层楼的门口都有一颗砖石,重量可能不一样。电梯在每层楼都会停一下。电梯又一个特别的按钮:到达第i层后,按下按钮,可以交换第i-1层和电梯第i层电梯口的砖石,i=2,3,4…N。从一楼出发,坐电梯到N层,要使得第N层楼的砖石最重,需要按多少次按钮?
【输入】输入占一行,首先是一个正整数N,2<=N<=20;然后是N个正整数,表示第1~N层楼梯电梯门口砖石重量,砖石的重量各个不相同。
【输出】输出求得的答案,即按按钮的次数
【样例输入】
8 49 38 65 97 76 13 27 30
【样例输出】
5


#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a[30],n;
    int i,t;//用来交换两个数的中间变量
    int cnt=0;//统计交换次数
    cin>>n;
    for(i=0;i<n;i++)
        cin>>a[i];//输入
    for(i=0;i<n-1;i++)//进行n-1次两辆比较
        if(a[i]>a[i+1])//比较的是前后两个数a[i]和a[i+1]
        {
            cnt++;
            t=a[i];
            a[i]=a[i+1];
            a[i+1]=t;
        }//如果逆序则交换
    cout<<cnt<<endl;
    return 0;
}

/*
【输入用例2】
9 123 45 299 150 88 300 220 56 189
【输出用例2】
6
【输入用例3】
10 123 45 299 150 88 300 220 56 189 77
【输出用例3】
7
【输入用例4】
11 123 45 299 150 88 300 220 56 189 77 205
【输出用例4】
8
【输入用例5】
12 123 45 299 150 88 300 220 56 189 77 205 99
【输出用例5】
9
【输入用例6】
13 123 45 299 150 88 300 220 56 189 77 205 99 156
【输出用例6】
10
*/

字符串排序

【描述】输入n个字符串(假定不包含空格),按ASCII编码值从小到大排序,排序方法采用简单排序
【输入】输入数据的第一行为正整数n,2<=n<=100,接下来又n行,每行是一个字符串
【输出】输出占n行,为排序后的n个字符串,每个字符串占一行
【样例输入】
5
China
GERMANY
French
England
ENGLAND
【样例输出】
China
ENGLAND
England
French
GERMANY

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s[110][80];//读入的n个字符串
    char t[80];//临时存放字符串
    int n,i,j;
    cin>>n;
    for(i=0;i<n;i++)
        cin>>s[i];
    for(i=0;i<n-1;i++)//简单选择法实现
    {
        int k=i;
        for(j=i+1;j<n;j++)
            if(strcmp(s[j],s[k])<0)
                k=j;
        if(k!=i)
        {
            strcpy(t,s[k]); strcpy(s[k],s[i]); strcpy(s[i],t);
        }
    }
    for(i=0;i<n;i++)
        cout<<s[i]<<endl;
	return 0;
}

/*
【输入用例2】
5
Python
Java
C
Ruby
Go
【输出用例2】
C
Go
Java
Python
Ruby
【输入用例3】
3
apple
banana
cherry
【输出用例3】
apple
banana
cherry
【输入用例4】
4
Dog
cat
bird
Ant
【输出用例4】
Ant
Dog
bird
cat
*/

字符排序

【描述】输入一个字符串,假定字符串只包含大小写字母字符,对字符串中的字符按ASCII编码值从小到大排序,例如,输入的字符串为viSuaL,排序后为LSaiuv。
【输入】输入占一行,为一个只包含大小写的字母字符串,长度不超过100个字符。
【输出】输出排序后的字符串
【样例输入】
viSuaL
【样例输出】
LSaiuv

#include<bits/stdc++.h>
using namespace std;
int main() 
{
    char a[110];//存储输入的字符串
    int i,k,j,t;
    cin>>a;
    int n=strlen(a);
    for(i=0;i<n-1;i++)//共进行n-1趟选择及交换
    {
        k=i;//第i趟中最小的数初始为a[i]
        for(j=i+1;j<n;j++)//将a[i+1]~a[n-1]与a[k]比较
        {
            if(a[j]<a[k])
                k=j;
        }
        t=a[k];
        a[k]=a[i];
        a[i]=t;//交换a[k]与a[i]
    }
    cout<<a<<endl;
	return 0;
}

/*
【输入用例2】
viSuaL
【输出用例2】
LSaiuv
【输入用例3】
HELLO
【输出用例3】
EHLLO
【输入用例4】
aaaaabbb
【输出用例4】
aaaaabbb
【输入用例5】
Ab1C
【输出用例5】
1ACb
【输入用例6】
ABCDE
【输出用例6】
ABCDE
*/

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐