问题】:输入n*n的矩阵,求矩阵中 p行q列,q行p列 的数据。\n【输入说明】:第一行整数n。接下来n行,每行n个整数。第n+2行两个整数p和q。\n【输出要求】:两行。第一行为矩阵中p行q列的数据。第
时间: 2023-05-04 13:01:16 浏览: 152
题目:输入n*n的矩阵,求矩阵中第p行q列,q行p列的数据。
【输入说明】:第一行整数n。接下来n行,每行n个整数。第n+2行,两个整数p,q。
【输出要求】:两行。第一行为矩阵中p行q列的数据。第二行为矩阵中q行p列的数据。
回答:这是一道关于矩阵的问题。题目要求我们输入一个n*n的矩阵,然后根据输入的p和q,输出矩阵中第p行q列和第q行p列的数据。
相关问题
输入n*n的矩阵,求矩阵中 p行q列,q行p列 的数据。\n【输入说明】:第一行整数n。接下来n行,每行n个整数。第n+2行两个整数p和q。\n【输出要求】:两行。第一行为矩阵中p行q列的数据。第二行为矩
阵中q行p列的数据。
题目描述:给定一个n*n的矩阵,求矩阵中第p行第q列和第q行第p列的数据。
输入说明:第一行为整数n,表示矩阵的大小。接下来n行,每行n个整数,表示矩阵中的数据。第n+2行为两个整数p和q,表示要求的数据所在的行和列。
输出要求:输出两行,第一行为矩阵中第p行第q列的数据,第二行为矩阵中第q行第p列的数据。
思路:直接根据题目要求输出即可。
代码:
clear;clc;close all p=input('输入数据:\n'); n=length(p); for i=1:n if p(i)<0 fprintf('\n错误'); p=input('输入数据:'); end end if abs(sum(p)-1)>0.00001 fprintf('\n错误\n'); p=input('输入数据:'); end Pr=sort(p,'descend'); q=Pr; a=zeros(n-1,n); for i=1:n-1 [q,l]=sort(q); a(i,:)=[l(1:n-i+1),zeros(1,i-1)]; q=[q(1)+q(2),q(3:n),1]; end for i=1:n-1 c(i,1:n*n)=blanks(n*n); end c(n-1,n)='0'; c(n-1,2*n)='1'; for i=2:n-1 c(n-i,1:n-1)=c(n-i+1,n*(find(a(n-i+1,:)==1))-(n-2):n*(find(a(n-i+1,:)==1))); c(n-i,n)='0'; c(n-i,n+1:2*n-1)=c(n-i,1:n-1); c(n-i,2*n)='1'; for j=1:i-1 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(a(n-i+1,:)==j+1)-1)+1:n*find(a(n-i+1,:)==j+1)); end end for i=1:n h(i,1:n)=c(1,n*(find(a(1,:)==i)-1)+1:find(a(1,:)==i)*n); ll(i)=length(find(abs(h(i,:))~=32)); end average_len=sum(Pr.*ll); HX=sum(Pr.*(-log2(Pr))); yita=HX/average_len; r=1-yita; h1=string(h); h2=transpose(h1); disp(['信号符号S: ',num2str(1:n)]); fprintf('信源符号概率:'); disp(Pr); fprintf('Huffman编码结果:'); disp(h2); fprintf('编码平均码长:'); disp(average_len); fprintf('信源熵:'); disp(HX); fprintf('编码效率:'); disp(yita); fprintf('冗余度:'); disp(r); subplot(1,1,1); bar(Pr,ll); title('概率与码长对应关系'); xlabel('概率'); ylabel('码长');
这段代码实现了Huffman编码的过程。它的主要步骤如下:
1. 首先读入概率向量p,并进行输入校验,保证输入的数值都为非负数,并且它们的和为1。
2. 对概率向量进行排序,得到Pr向量,其中Pr(i)为概率第i大的数值。
3. 根据概率向量Pr和码长q,生成n-1个节点的哈夫曼树,其中q为排序后的概率向量。生成的哈夫曼树以矩阵a的形式给出,其中a(i,:)表示第i个节点的左右子树对应的符号。例如,a(1,:)=[2,3,0,0]表示第1个节点的左子树对应符号2,右子树对应符号3。
4. 根据哈夫曼树,生成对应的哈夫曼编码。生成的哈夫曼编码以矩阵c的形式给出,其中c(i,:)表示符号i对应的哈夫曼编码。例如,c(1,:)='0 0 0 1'表示符号1对应的哈夫曼编码为'0001'。
5. 根据哈夫曼编码,计算平均码长average_len,信源熵HX,编码效率yita和冗余度r,并输出结果。
注:由于这段代码没有提供p的输入方式,可以手动定义一个概率向量p进行计算。
阅读全文