废话少说,直接上题目!一眼看过去,属于结构体的类型;然后一个从前面往后,一个从后往前。两个循环,又因为都是偶数的个数,所以绝对是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;
}
不知道为什么今天写到一半就闪退了,然后就只能用图片了,感觉图片方便一点哈哈哈哈~嗝(开心)
继续加油!