一排里的位置交换 围成圈 十进制整数转二进制 进出栈 栈容量 自创语言 离队 入队

如果需要代码解释请在评论区留言

1244: 一排里的位置交换

题目描述
体育课上,老师把一排里的两个身高不同的同学的位置交换了一下以方便安排分组训练。你能编程模拟这个过程吗?

#include<cstdio>
using namespace std;
int main() {
    int n;
    int a[105]={0};
    scanf("%d",&n);
    for(int i=1;i<=n;i++) {
        scanf("%d",&a[i]);
    }
    int l,r,temp;
    scanf("%d%d",&l,&r);
    temp = a[l];
    a[l] = a[r];
    a[r] = temp;
    for(int i=1;i<=n;i++) {
        printf("%d ",a[i]);
    }
    return 0;
}

1259: 围成圈

题目描述
假如有一次班里组织户外活动,同学们随机围坐成一圈做游戏,每个同学都记住了左右同学的编号,活动结束后,老师想让你帮忙复原当时大家坐的位置,你能通过每个同学记录的左右同学的编号,把当时大家坐的一圈情况复原吗?

#include<cstdio>
using namespace std;
int l[105],r[105];
int main() {
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++) {
        scanf("%d%d",&l[i],&r[i]);
    }
    int k;
    scanf("%d",&k);
    for(int i=1;i<=n;i++) {
        printf("%d ",k);
        k = l[k];
    }
    return 0;
}

1045: 十进制整数转二进制

题目描述
二进制是计算机运算的基础,给你一个十进制整数,你能编程实现转二进制吗?

#include<cstdio>
#include<iostream>
using namespace std;
void toBinary(long long x) {
    if(x) toBinary(x/2);
    else return;
    cout<<x%2;
}
int main() {
    int n;
    scanf("%d",&n);
    long long x;
    while(n--) {
        scanf("%lld",&x);
        toBinary(x);
        printf("\n");
    }
    return 0;
}

1305: 进出栈

题目描述
设栈S的初始状态为空,元素a, b, c, d, e, f, g 依次入栈,给你一个出栈序列,请编程判断出栈序列是否正确。

#include<cstdio>
#include<iostream>
#define N 7
using namespace std;
char tar[N+2];
char s[N+2];
int main() {
    char a[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
    int tot = 0;
    for(int i=0;i<N;i++) {
        cin>>tar[i];
    }
    int cur = 0;
    int len = 0;
    bool flag=true;
    for(int i=0;i<N;i++) {
        if(len>0 && tar[i]==s[len]) {
            len--;
            continue;
        }
        if(cur>=N) flag=false;
        while(cur<N && tar[i]!=a[cur]) {
            s[++len] = a[cur++];
            if(len>tot) tot=len;
        }
        cur++;
 
    }
    if(flag) cout<<"True";
    else cout<<"False";
    return 0;
}

1306: 栈容量

题目描述
设栈S的初始状态为空,元素a,b,c,d,e,f,g依次入栈,出栈顺序为b,d,c,f,e,a,g那么栈容量至少应该是3。如果任意给你一个出栈序列,你能编程判断相应的栈容量至少是多少吗?

#include<cstdio>
#include<iostream>
#define N 7
using namespace std;
char tar[N+2];
char s[N+2];
int main() {
    char a[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
    int tot = 0;
    for(int i=0;i<N;i++) {
        cin>>tar[i];
    }
    int cur = 0;
    int len = 0;
    for(int i=0;i<N;i++) {
        if(len>0 && tar[i]==s[len]) {
            len--;
            continue;
        }
        while(tar[i]!=a[cur]) {
            s[++len] = a[cur++];
            if(len>tot) tot=len;
        }
        cur++;
    }
    cout<<tot+1;
    return 0;
}

1274: 自创语言

题目描述
学了一段英语课之后,小名同学发现英语单词就是26个字母中若干个组合在一起的,于是他想自己也创立一种语言,为了简化单词,他计划只选26个小写字母的前n个符号构造长度也为n个符号的单词,构造好单词后,先要编写个词典,给每个单词有个解释以便人们学习他自创的语言。你能编程帮助按字典序输出所有长度为n的单词吗?

#include<cstdio>
#include<iostream>
using namespace std;
int n;
char a[30];
void dictionary(int tot) {
    if(tot == n+1) {
        for(int i=1;i<=n;i++) {
            cout<<a[i];
        }
        cout<<'\n';
        return;
    }
    for(int i=0;i<n;i++) {
        a[tot] = 'a'+i;
        dictionary(tot+1);
    }
 
}
int main() {
    scanf("%d",&n);
    dictionary(1);
    return 0;
}

1256: 离队

题目描述
体育课上,班上的同学排成了一排,结果有个同学突然感觉不适,需要去医院,就离队了,你能编程模拟离队后的状态吗?

#include<cstdio>
#include<iostream>
using namespace std;
int main() {
    int n,k;
    scanf("%d",&n);
    int a[105]={0};
    for(int i=1;i<=n;i++) {
        scanf("%d",&a[i]);
    }
    scanf("%d",&k);
    for(int i=1;i<=n;i++) {
        if(i==k) continue;
        printf("%d ",a[i]);
    }
    return 0;
}

1257: 入队

题目描述
体育课上,上课铃响后,大家排成了一排,结果有一个同学迟到了,老师让他插在这一排的某个位置,你能编程模拟这个过程吗?

#include<cstdio>
#include<iostream>
using namespace std;
int main() {
    int n,k,ins;
    scanf("%d",&n);
    int a[105]={0};
    for(int i=1;i<=n;i++) {
        scanf("%d",&a[i]);
    }
    scanf("%d%d",&ins,&k);
    for(int i=1;i<k;i++) {
        printf("%d ",a[i]);
    }
    printf("%d ",ins);
    for(int i=k;i<=n;i++) {
        printf("%d ",a[i]);
    }
    return 0;
}
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值