写一个c++程序,有m个数字和n次排序,计算从来没有排在相邻位置的对数,1,2和2,1看作是相同的,这里是一个例子4 2 1 2 3 4 4 3 1 2有4个数字和两次排序,其中1、4和2、4从来没有排在一起,所以答案是2
时间: 2024-02-13 21:01:11 浏览: 23
用C++语言编写的计算2的N次方小程序
5星 · 资源好评率100%
以下是一个简单的C++程序,实现了上述功能:
```
#include<iostream>
using namespace std;
int main(){
int m, n, ans = 0;
cin >> m >> n;
bool adj[m + 1][m + 1] = {false}; //邻接矩阵,记录数字i和数字j是否相邻
for(int i = 0; i < n; i++){
int a[m];
for(int j = 0; j < m; j++){
cin >> a[j];
}
for(int j = 0; j < m - 1; j++){
adj[a[j]][a[j + 1]] = true;
adj[a[j + 1]][a[j]] = true;
}
}
for(int i = 1; i <= m; i++){
for(int j = i + 1; j <= m; j++){
if(!adj[i][j]){
ans++;
}
}
}
cout << ans << endl;
return 0;
}
```
程序的大致思路是,首先读入m和n,然后定义一个邻接矩阵adj,记录数字i和数字j是否相邻。接着,读入n次排序,对于每次排序,将排序中相邻的数字在邻接矩阵中标记为相邻。最后,遍历邻接矩阵,统计从来没有排在相邻位置的数字对数,输出答案即可。
阅读全文