乘法表问题

来源:互联网 发布:js 时间选择插件 csdn 编辑:程序博客网 时间:2024/05/22 03:29
#include <iostream>using namespace std;int main(){int n;char str[] = "bbbba";n = strlen(str);int ***m = new int**[n];//创建三维数组for (int i = 0; i < n; i++){m[i] = new int*[n];for (int j = 0; j < n; j++){m[i][j] = new int[3]();}}//矩阵初始化for (int i = 0; i < n; i++){if (str[i] == 'a'){m[i][i][0] = 1;}else if (str[i] == 'b'){m[i][i][1] = 1;}else if (str[i] == 'c'){m[i][i][2] = 1;}}//矩阵处理for (int r = 1; r < n; r++){for (int i = 0; i < n - r ; i++){int j = i + r ;for (int k = i; k < j; k++){m[i][j][0] += m[i][k][0] * m[k + 1][j][2] +m[i][k][1] * m[k + 1][j][2] +m[i][k][2] * m[k + 1][j][0];}for (int k = i; k < j; k++){m[i][j][1] += m[i][k][0] * m[k + 1][j][0] +m[i][k][0] * m[k + 1][j][1] +m[i][k][1] * m[k + 1][j][1];}for (int k = i; k < j; k++){m[i][j][2] += m[i][k][1] * m[k + 1][j][0] +m[i][k][2] * m[k + 1][j][1] +m[i][k][2] * m[k + 1][j][2];}}}//输出矩阵for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){for (int k = 0; k < 3; k++){cout<<m[i][j][k]<<" ";}cout << "  ";}cout << endl;}cout << endl;cout <<"加括号的方式有:"<< m[0][n-1][0]<<"种"<<endl;return 0;}

1 0
原创粉丝点击