행과 열을 교환하여 생성할 수 있는 고유한 행렬의 수를 찾는 C++ 프로그램
n x n 행렬이 있다고 가정합니다. 행렬의 각 요소는 고유하며 1에서 n2 사이의 정수입니다. 이제 우리는 원하는 수와 순서로 다음 작업을 수행할 수 있습니다.
(1 ≤ x
(1 ≤ x
x + y ≤ k이며 이러한 값은 동일한 행과 열에 나타날 수 없습니다.
연산을 수행하여 얻을 수 있는 고유한 행렬의 수를 알아내야 합니다.
입력이 n = 3, k = 15, mat = {{4, 3, 6}, {5, 9, 7}, {1, 2, 8}}과 같은 경우 출력은 다음과 같습니다. 36.
예를 들어 선택한 두 값은 x = 3과 y = 5입니다. 열을 바꾸면 결과 행렬은 -
3 4 6 9 5 7 2 1 8
가 됩니다. 이런 식으로 36개의 고유한 행렬을 얻을 수 있습니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. -
Define a function dfs(), this will take k, arrays ver and visited, one stack s. if visited[k] is non-zero, then: return visited[k] := true insert k into s for initialize iterator j := start of ver[k], when j is not equal to last element of ver[k], update (increase j by 1), do: dfs(*j, ver, visited, s) Define an array f of size: 51. f[0] := 1 for initialize i := 1, when i <= 50, update (increase i by 1), do: f[i] := (i * f[i - 1]) mod modval Define an array e of size n Define an array pk of size n for initialize i := 0, when i < n, update (increase i by 1), do: for initialize j := i + 1, when j < n, update (increase j by 1), do: chk := 0 for initialize l := 0, when l < n, update (increase l by 1), do: if (mat[i, l] + mat[j, l]) > k, then: chk := 1 Come out from the loop if chk is same as 0, then: insert j at the end of pk[i] insert i at the end of pk[j] chk := 0 for initialize l := 0, when l < n, update (increase l by 1), do: if (mat[l, i] + mat[l, j]) > k, then: chk := 1 Come out from the loop if chk is same as 0, then: insert j at the end of e[i] insert i at the end of e[j] resa := 1, resb = 1 Define an array v1 of size: n and v2 of size: n. for initialize i := 0, when i < n, update (increase i by 1), do: v1[i] := false v2[i] := false for initialize i := 0, when i < n, update (increase i by 1), do: Define one stack s. if not v1[i] is non-zero, then: dfs(i, pk, v1, s) if not s is empty, then: resa := resa * (f[size of s]) resa := resa mod modval for initialize i := 0, when i < n, update (increase i by 1), do: Define one stack s if not v2[i] is non-zero, then: dfs(i, e, v2, s) if not s is empty, then: resb := resb * (f[size of s]) resb := resb mod modval print((resa * resb) mod modval)
예제
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. -
#include <bits/stdc++.h> using namespace std; #define modval 998244353 const int INF = 1e9; void dfs(int k, vector<int> ver[], bool visited[], stack<int> &s) { if(visited[k]) return; visited[k] = true; s.push(k); for(vector<int> :: iterator j = ver[k].begin(); j!=ver[k].end(); j++) dfs(*j, ver, visited, s); } void solve(int n, int k, vector<vector<int>> mat) { int f[51]; f[0] = 1; for(int i = 1; i <= 50; i++) { f[i] = (i * f[i-1]) % modval; } vector<int> e[n]; vector<int> pk[n]; for(int i = 0; i < n; i++) { for(int j = i + 1;j < n; j++) { int chk = 0; for(int l = 0; l < n; l++){ if((mat[i][l] + mat[j][l]) > k) { chk = 1; break; } } if(chk==0) { pk[i].push_back(j); pk[j].push_back(i); } chk = 0; for(int l = 0;l < n; l++) { if((mat[l][i] + mat[l][j]) > k){ chk = 1; break; } } if(chk == 0) { e[i].push_back(j); e[j].push_back(i); } } } int resa = 1, resb = 1; bool v1[n], v2[n]; for(int i = 0; i < n; i++) { v1[i] = false; v2[i] = false; } for(int i = 0;i < n; i++) { stack<int> s; if(!v1[i]) { dfs(i, pk, v1, s); if(!s.empty()) { resa *= (f[s.size()]) % modval; resa %= modval; } } } for(int i = 0 ;i < n; i++) { stack<int> s; if(!v2[i]){ dfs(i, e, v2, s); if(!s.empty()) { resb *= (f[s.size()]) % modval; resb %= modval; } } } cout<< (resa * resb) % modval; } int main() { int n = 3, k = 15; vector<vector<int>> mat = {{4, 3, 6}, {5, 9, 7}, {1, 2, 8}}; solve(n, k, mat); return 0; }
Input
3, 15, {{4, 3, 6}, {5, 9, 7}, {1, 2, 8}}
Output
36
위 내용은 행과 열을 교환하여 생성할 수 있는 고유한 행렬의 수를 찾는 C++ 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 시리즈의 첫 번째 기사에서는 인공 지능, 머신 러닝, 딥 러닝, 데이터 과학 등의 연관성과 차이점에 대해 논의했습니다. 또한 전체 시리즈에서 사용할 프로그래밍 언어, 도구 등에 대해 몇 가지 어려운 선택을 했습니다. 마지막으로 약간의 행렬 지식도 소개했습니다. 이번 글에서는 인공지능의 핵심인 매트릭스에 대해 심도있게 논의해보겠습니다. 그런데 그 전에 먼저 인공지능의 역사를 이해해 볼까요? 왜 인공지능의 역사를 이해해야 할까요? 역사상 수많은 AI 붐이 있었지만, AI의 잠재력에 대한 큰 기대는 실현되지 못한 경우가 많았다. 인공지능의 역사를 이해하면 이 인공지능의 물결이 기적을 일으킬지 아니면 터질 또 다른 거품일지 알 수 있습니다. 우리를

스왑 공간은 Linux 시스템에서 중요한 역할을 하며, 특히 시스템의 메모리가 부족한 경우 더욱 그렇습니다. 높은 부하에서도 시스템이 원활하게 실행되고 안정성을 유지할 수 있도록 도와주는 백업 메모리 저장 공간 역할을 합니다. 이 문서에서는 시스템 성능이 최적화되고 다양한 작업 부하를 처리할 수 있도록 Ubuntu 22.04LTS에 스왑 공간을 추가하는 방법에 대한 자세한 가이드를 제공합니다. 스왑 공간 이해 스왑 공간은 시스템의 물리적 RAM을 보완하는 데 사용되는 가상 메모리를 제공합니다. 시스템의 RAM이 부족하면 커널은 메모리 부족 및 시스템 충돌을 방지하기 위해 데이터를 디스크로 교환합니다. Linux 시스템은 일반적으로 이러한 상황을 처리하기 위해 스왑 공간을 사용합니다. 여러 메모리 집약적 애플리케이션을 동시에 실행하여 매우 큰 파일이나 데이터를 처리합니다.

널리 사용되는 범용 프로그래밍 언어는 Python입니다. 데스크톱 애플리케이션, 웹 개발, 기계 학습 등 다양한 산업에서 사용됩니다. 다행스럽게도 Python에는 초보자에게 적합한 간단하고 이해하기 쉬운 구문이 있습니다. 이 기사에서는 Python을 사용하여 행렬의 오른쪽 대각선의 합을 계산합니다. 매트릭스란 무엇입니까? 수학에서는 직사각형 배열이나 행렬을 사용하여 수학적 대상이나 그 속성을 설명합니다. 이는 행과 열로 배열된 숫자, 기호 또는 표현식을 포함하는 직사각형 배열 또는 테이블입니다. 예를 들어 -234512367574 따라서 3행 4열의 행렬이며 3*4 행렬로 표현됩니다. 이제 행렬에는 두 개의 대각선, 즉 주 대각선과 보조 대각선이 있습니다.

이번 글에서는 파이썬에서 numpy 라이브러리를 사용하여 행렬의 행렬식을 계산하는 방법을 알아 보겠습니다. 행렬식의 행렬식은 행렬을 간결한 형태로 표현할 수 있는 스칼라 값이다. 선형대수학에서 유용한 양이며 물리학, 공학, 컴퓨터 과학을 포함한 다양한 분야에서 수많은 응용이 가능합니다. 이 글에서는 먼저 행렬식의 정의와 속성에 대해 논의하겠습니다. 그런 다음 numpy를 사용하여 행렬의 행렬식을 계산하는 방법을 배우고 몇 가지 예를 통해 실제로 어떻게 사용되는지 살펴보겠습니다. 행렬식의 행렬식은 속성을 설명하는 데 사용할 수 있는 스칼라 값입니다.

행렬은 행과 열로 배열된 숫자의 집합입니다. m행과 n열로 구성된 행렬을 mXn 행렬이라고 하며, m과 n을 차원이라고 합니다. 행렬은 목록이나 NumPy 배열을 사용하여 Python에서 만든 2차원 배열입니다. 일반적으로 행렬 곱셈은 첫 번째 행렬의 행과 두 번째 행렬의 열을 곱하여 수행할 수 있습니다. 여기서 첫 번째 행렬의 열 개수는 두 번째 행렬의 행 개수와 같아야 합니다. 입력 및 출력 시나리오 두 개의 행렬 A와 B가 있다고 가정합니다. 이 두 행렬의 차원은 각각 2X3과 3X2입니다. 곱셈 후 결과 행렬은 2개의 행과 1개의 열을 갖게 됩니다. [b1,b2][a1,a2,a3]*[b3,b4]=[a1*b1+a2*b2+a3*a3][a4,a5,a6][b5,b6][a4*b2+a

고유한 소인수는 소수의 인수이기도 합니다. 이 문제에서는 숫자의 모든 고유한 소인수의 곱을 찾아야 합니다. 소수(素數)란 숫자와 1이라는 두 가지 약수만으로 구성된 숫자입니다. 여기서 우리는 숫자의 고유 소인수 곱을 계산하는 가장 좋은 방법을 찾으려고 노력할 것입니다. 숫자. 문제를 더 명확하게 설명하기 위해 예를 들어 보겠습니다. n=1092라는 숫자가 있고, 그 고유한 소인수들의 곱을 찾아야 합니다. 1092의 소인수는 2,3,7,13이고 곱은 546입니다. 2이를 구하는 간단한 방법은 숫자의 모든 약수를 찾아 그 인수가 소수인지 확인하는 것입니다. 그런 다음 숫자를 곱하면 곱셈 변수가 반환됩니다. Input:n=10Output:10 여기서는 입력에 대해 설명합니다.

사용자는 두 행렬의 순서뿐만 아니라 두 행렬의 요소도 입력해야 합니다. 그런 다음 두 행렬을 비교합니다. 행렬 요소와 크기가 모두 같으면 두 행렬은 같습니다. 행렬의 크기는 동일하지만 요소가 동일하지 않은 경우 행렬은 비교할 수 있지만 동일하지 않은 것으로 표시됩니다. 크기와 요소가 일치하지 않으면 표시 행렬을 비교할 수 없습니다. 다음 프로그램은 두 행렬이 같은지 비교하는 데 사용되는 C 프로그램입니다. #include<stdio.h>#include<conio.h>main(){ intA[10][10],B[10][10] ; 안에

소셜 미디어 운영에서 매트릭스 계정 역류는 서로 다른 계정 간에 트래픽을 유도함으로써 팬들이 서로를 보완하고 활동을 늘릴 수 있는 일반적인 전략입니다. 매트릭스 계정 간의 역류는 신중한 계획과 실행이 필요하며 간단한 문제가 아닙니다. 이 기사에서는 서로 다른 계정 간의 반전을 구현하는 방법과 행렬 반전의 중요성에 대해 자세히 설명합니다. 1. 매트릭스에서 계정을 반전시키는 방법은 무엇입니까? 매트릭스 계정 중에서 주요 트래픽 소스이자 핵심 콘텐츠 출시의 플랫폼이 될 메인 계정을 선택하는 것이 중요합니다. 콘텐츠 기획은 일관된 콘텐츠 품질과 스타일을 보장하기 위해 계정 특성과 대상 고객을 기반으로 해당 콘텐츠 계획을 수립하는 것입니다. 3. 서로 추천하고 좋아요: 매트릭스 계정 간에 서로 홍보하고 좋아요를 누르고 합리적인 레이아웃과 배치를 통해 팬들을 안내합니다.
