递归求解N阶行列式
来源:互联网 发布:越狱软件源 编辑:程序博客网 时间:2024/04/29 18:41
#include "stdafx.h"#include <Windows.h>#include <process.h>#include <time.h>#include <iostream>using namespace std; int sum; int sum1,sum2; int **a,**b; int n;CRITICAL_SECTION cs;HANDLE evFin[2];int power(int order){ if(order % 2 == 0) return 1; else return -1;}int cal_matrix(int** m, int n, int row, int col){ int** temp; int sum = 0; int temp_row = 0, temp_col = 0; // EnterCriticalSection(&cs); if (n == 0) return sum = 1; temp = new int* [n]; for (int i = 0; i < n ;i++) { temp[i] = new int[n]; } for (int i = 0 ; i <= n; i++){ if (i == row - 1) continue; for (int j = 0;j <= n; j++){ if (j != col - 1){ if (temp_col < n){ //EnterCriticalSection(&cs); temp[temp_row][temp_col++] = m[i][j]; // LeaveCriticalSection(&cs); } else{ temp_col = 0; temp_row++; temp[temp_row][temp_col] = m[i][j]; temp_col++; } } } } /************************调试输出行列式*******************************/ /*********************************************************************/ /* for(int i = 0; i< n; i++) for(int j = 0; j < n; j++) cout<<temp[i][j]; cout<<" "; */ /*********************************************************************/ for (int i = 0; i < n; i++){ sum += temp[row-1][i] * power(row+i+1) * cal_matrix(temp,n-1,row,i+1); } return sum; delete[] temp; //LeaveCriticalSection(&cs);}void ThreadFunc1(PVOID param){ for (int i = 0; i < n/2; i++){ sum1 += a[0][i] * power(1+i+1) * cal_matrix(a,n-1,1,i+1); } //SetEvent(evFin[0]);}void ThreadFunc2(PVOID param){ for(int i = n/2; i < n; i++) sum2 += a[0][i] * power(1+i+1) * cal_matrix(a,n-1,1,i+1);}int _tmain(int argc, _TCHAR* argv[]){ HANDLE handle[2]; clock_t start ,finish; //evFin[0] = CreateEvent(NULL,FALSE,FALSE,NULL); // evFin[0] = CreateEvent(NULL,FALSE,FALSE,NULL); cout<<"The degree of Matrix: "<<endl; cin>>n; a= new int* [n]; for (int i = 0; i < n ;i++) { a[i] = new int[n]; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin>>a[i][j]; } } start = clock(); /******************************单进程********************************/ /********************************************************************/ /*** for(int i = 0; i < n; i++){ sum += a[0][i] * power(1+i+1) * cal_matrix(a,n-1,1,i+1); } */ /*********************************************************************/ handle[0] = (HANDLE)_beginthread(ThreadFunc1,0,NULL); handle[1] = (HANDLE)_beginthread(ThreadFunc2,0,NULL); //Sleep(1000); WaitForMultipleObjects(2,handle,TRUE, INFINITE); sum = sum1 + sum2; cout<<sum<<endl; finish = clock(); cout<<"Program is running:"<<(double)(finish - start)/ CLOCKS_PER_SEC<<"s"<<endl; delete[] a; return 0;}
0 0
- 递归求解N阶行列式
- n阶行列式求解
- 【java】N阶行列式求解
- java实现N阶行列式求解
- N阶行列式计算程序(VB,递归)
- C++递归方法计算n阶行列式
- 递归法求解矩阵行列式
- 用行列式的定义方法求解n阶行列式的值(C++)
- 计算n阶行列式
- 计算n阶行列式
- 线性代数N阶行列式
- N阶行列式
- N阶行列式计算
- n阶 行列式计算
- 递归方法求解n!
- 递归求解N皇后
- 递归求解n!
- 行列式求解
- leetcode-107 Binary Tree Level Order Traversal II
- 大数阶乘问题
- Java——IO总结整理
- Android Drawable 那些不为人知的高效用法 -画圆角 已点击状态显示- UI性能优化
- C语言的文件读取操作总结
- 递归求解N阶行列式
- 计算机视觉方面的数据
- 垃圾回收机制(一)
- 剑指offer--矩阵中的路径
- 创建桌面快捷图标
- 每日一题23:查找树基本操作
- Spark源码分析文章
- 《数据结构编程实验》 4.5.1TEX Quotes
- 如何在MySQL中设置外键约束