用C++写一个八数矩阵
时间: 2023-10-09 12:06:09 浏览: 43
好的,这是一个随机生成的八数矩阵的 C++ 代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
using namespace std;
int main() {
vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8};
random_shuffle(nums.begin(), nums.end());
int pos = rand() % 9;
nums.insert(nums.begin() + pos, -1);
for (int i = 0; i < 9; i++) {
if (nums[i] == -1) {
cout << "- ";
} else {
cout << nums[i] << " ";
}
if ((i + 1) % 3 == 0) {
cout << endl;
}
}
return 0;
}
```
这段代码使用了 STL 中的 vector 类型来存储数字 1 到 8,然后使用 random_shuffle 函数随机打乱这些数字的顺序。接着,使用 rand 函数随机生成一个空白格子的位置,并将 -1 插入到对应位置上,最终输出生成的八数矩阵。
相关问题
用c++写一个输入邻接矩阵的程序
以下是一个简单的 C++ 程序,可以输入邻接矩阵:
```cpp
#include <iostream>
using namespace std;
const int MAXN = 100; // 最大顶点数
int n; // 顶点数
int graph[MAXN][MAXN]; // 邻接矩阵
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> graph[i][j];
}
}
return 0;
}
```
这个程序首先输入顶点数 n,然后使用两个循环输入邻接矩阵。例如,输入以下邻接矩阵:
```
0 1 1
1 0 1
1 1 0
```
程序的输出应该是:
```
3
0 1 1
1 0 1
1 1 0
```
注意,这个程序没有对输入进行任何检查,如果输入不符合邻接矩阵的格式,程序可能会崩溃或输出错误的结果。在实际使用中,应该对输入进行适当的检查和错误处理。
用c++写一个矩阵连乘
好的,以下是用C++实现矩阵连乘的代码:
```c++
#include<iostream>
using namespace std;
const int MAXN = 205;
const int INF = 0x3f3f3f3f;
int n;
int m[MAXN][MAXN], s[MAXN][MAXN], p[MAXN];
void matrix_chain_order(){
for(int i=1; i<=n; i++) m[i][i] = 0;
for(int l=2; l<=n; l++){
for(int i=1; i<=n-l+1; i++){
int j = i + l - 1;
m[i][j] = INF;
for(int k=i; k<j; k++){
int tmp = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
if(tmp < m[i][j]){
m[i][j] = tmp;
s[i][j] = k;
}
}
}
}
}
void print_optimal_parens(int i, int j){
if(i == j) cout<<'A'<<i;
else{
cout<<'(';
print_optimal_parens(i, s[i][j]);
print_optimal_parens(s[i][j]+1, j);
cout<<')';
}
}
int main(){
cin>>n;
for(int i=0; i<=n; i++) cin>>p[i];
matrix_chain_order();
cout<<m[1][n]<<endl;
print_optimal_parens(1, n);
return 0;
}
```
该程序的输入格式为:
第一行为矩阵的数量 $n$;
第二行为 $n+1$ 个整数 $p_0, p_1, ..., p_n$,表示矩阵的大小;
输出格式为:
第一行为最小计算量;
第二行为最优计算顺序。
例如,对于输入数据:
```
6
30 35 15 5 10 20 25
```
程序的输出为:
```
15125
((A1(A2A3))((A4A5)A6))
```