日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

U66785 行列式求值

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 U66785 行列式求值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二更:把更多的行列式有關內容加了進來(%%%%%Jelly Goat奆佬)

題目描述

給你一個N(n≤10n\leq 10n10)階行列式,請計算出它的值

輸入輸出格式

輸入格式:

第一行有一個整數n
在以下n行中,每行有n個整數,表示該行列式

輸出格式:

這個行列式的值

輸入輸出樣例

輸入樣例#1:? 8 2 10 4 4 3 6 10 6 1 10 9 3 2 1 6 7 3 9 8 7 1 1 8 7 2 10 8 6 9 9 3 4 1 7 1 8 2 6 2 3 9 2 4 8 10 6 10 3 3 6 7 9 8 2 8 1 2 9 2 1 10 7 4 5 輸出樣例#1: -135742 輸入樣例#2:? 4 1 2 3 4 1 3 4 1 1 4 1 2 1 1 2 3 輸出樣例#2:? 16
首先這是一道非常簡單的板子題,他耗費了我兩天將近兩個多小時的時間,那么我們就來細細分析一下這道題
思路大致如下:

按照高斯消元法,把行列式消成下三角,然后按照公式直接求對角線乘積即為答案
有這么幾個坑
1.忘記用double類型,因為行列式做除法的時候肯定是要出小數的,不用double肯定gg
2.沒有注意當a[i][i]==0的時候,我們沒法按照公式把它下面消為零,所以需要一個換行操作
代碼如下
while (a[i][i] == 0 && sum<=n) //對是否a[i][i]是0的特判 {CH2(i, sum + 1); //交換x列和y列ans *= -1;sum++;} 3.輸出的時候忘記控制精度,其實原因是這樣的,在小數點后位數多于18個之后,c++會自動轉成科學計數法。。。。。。
但是洛谷不認啊喂!!!!!!!,所以輸出的時候手動控制一下就好
printf("%0.0lf", ans); 4.各種奇奇怪怪的諸如循環控制寫錯了或者是while條件判錯了的詭異失誤,導致我掛了整整五次
不過這種經歷也的確是能讓我深刻的記住這道題了吧。
現在貼一下AC代碼
#include <iostream> #include <string> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; double n, a[20][20], ans = 1; int sum; inline void CH1(int x, int y, double k) //第y行減k*x {for (int i = 1; i <= n; ++i)a[y][i] -= (double)(k * a[x][i]); } inline void CH2(int x, int y) //交換x列和y列 {for (int i = 1; i <= n; ++i)swap(a[i][x], a[i][y]); } inline double CH3(int x, double k) //把第x行提出一個公因數k {for (int i = 1; i <= n; ++i)a[x][i] /= k;return k; } int main() {scanf("%lf", &n);for (int i = 1; i <= n; ++i)for (int j = 1; j <= n; ++j)scanf("%lf", &a[i][j]);for (int i = 1; i < n; ++i){ sum=i;while (a[i][i] == 0 && sum<=n) //對是否a[i][i]是0的特判 {CH2(i, sum + 1); //交換x列和y列ans *= -1;sum++;}ans *= CH3(i, a[i][i]);for (int j = i + 1; j <= n; ++j)CH1(i, j, a[j][i]);}for (int i = 1; i <= n; ++i)ans *= a[i][i];printf("%0.0lf", ans);return 0; }

?

?

?

轉載于:https://www.cnblogs.com/this-is-M/p/10698562.html

總結

以上是生活随笔為你收集整理的U66785 行列式求值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。