槑先生 2021-07-30 22:08 采纳率: 70%
浏览 43
已结题

关于C++编程计算行列式的问题

这道问题来自于学校的oj平台

img

我用C++,课上讲的递归算法来计算:沿最后一行展开,归结为维度-1的行列式计算
下面是代码:

#include<iostream>
using namespace std;

int power(int n,int m) {
    int result = 1;
    for(int i = 1;i <= n+m;i++){
        result = result * (-1);
    }
    return result;
}

int count(int N, int m[7][7],int judge[7]) {
    if (N == 1) {
        int ans1 = 0;
        for (int i = 1;i <= 6;i++) {
            ans1 = ans1+judge[i] * m[1][i];
        }
        return ans1;
    }
    else {
        int ans2=0;
        for (int j = 1;j <= 6;j++) {
            if (judge[j] == 1) {
                int part1 = power(N, j) * m[N][j] ;
                judge[j] = 0;
                int part2 = count(N - 1, m, judge);
                ans2 +=part1 * part2;
                judge[j] = 1;
            }
        }
        return ans2;
    }
    
}

int main() {
    int N;
    cin >> N;
    int a[7][7];
    int judge[7] = {0,0,0,0,0,0,0};
    for (int i = 1;i <= N;i++) {
        judge[i] = 1;
    }
    
    for (int i = 1;i <= N;i++) {
        for (int j = 1;j <= N; j++) {
            cin >> a[i][j];
        }
    }
    cout << count(N, a, judge);

}

但是发现程序有bug,交到oj上始终只有一半分
img

但是找了好久也找不出bug,请问究竟是哪里错了?

  • 写回答

3条回答 默认 最新

  • Soda Wang 2021-07-31 10:39
    关注

    拉普拉斯展开中,
    img
    对应的小矩阵是原矩阵删去第i行和第j列,你没有表达出来这个概念

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月8日
  • 已采纳回答 7月31日
  • 创建了问题 7月30日

悬赏问题

  • ¥15 MddBootstrapInitialize2失败
  • ¥15 LCD Flicker
  • ¥15 Spring MVC项目,访问不到相应的控制器方法
  • ¥15 esp32在micropython环境下使用ssl/tls连接mqtt服务器出现以下报错Connected on 192.168.154.223发生意外错误: 5无法连接到 MQTT 代理,如何解决?
  • ¥15 关于#genesiscsheel#的问题,如何解决?
  • ¥15 Android aidl for hal
  • ¥15 STM32CubeIDE下载程序报错
  • ¥15 微信好友如何转变为会员系统?(相关搜索:小程序)
  • ¥15 c# 直接使用c++ 类库文件
  • ¥15 一个主机电脑有两个显示器,当前有两个软件主体是网页html打包的exe程序,如何通过cmd命令bat同时打开软件一个在主屏幕显示,另外一个软件在2副屏幕上显示