PTA-030 一帮一

在这里插入图片描述
废话少说,直接上题目!一眼看过去,属于结构体的类型;然后一个从前面往后,一个从后往前。两个循环,又因为都是偶数的个数,所以绝对是n/2的结束时刻。但是这里要注意的是:外循环比对完一次以后,在第一次已经输出过的数据是不能再输出的,尽管条件都满足,所以这里要注意不要重复输出了!那么怎么解决呢?那就用标记法嘛!但是这里的标记不是一个变量,而是个清零数组。当比对过以后符合条件输出的做标记,然后再进行下一次的比对。而且条件是cnm[i]==0而且是异性的,再输出就行了。(终于写到结构体了,好开心!)

C++代码:

#include <iostream>
#include <math.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct xueshen
{
    int sex;
    char name[10];
} xueshen[10];
int main()
{
    int n;
    cin >> n;
    int cnm[n] = {0};//不一定这样写
    for (int i = 0; i < n; i++)
    {
        cin >> xueshen[i].sex >> xueshen[i].name;
    }
    for (int j = 0; j < n / 2; j++)
    {//这里可以先cout<<xueshen[j].name<<" ",那后面的省略就行了
        for (int k = n - 1; k >= n / 2; k--)
        {
            if (cnm[k] == 0 && xueshen[j].sex != xueshen[k].sex)
            {
                cout << xueshen[j].name << " " << xueshen[k].name << endl;
                cnm[k] = 1;//做标记,不重复比对
                break;
            }
        }
    }
    return 0;
}

不知道为什么今天写到一半就闪退了,然后就只能用图片了,感觉图片方便一点哈哈哈哈~嗝(开心)
继续加油!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值