BUPT OJ96 矩阵幂

44 篇文章 3 订阅

题目描述

​给你一个n*n的矩阵,

求其矩阵的k次幂,即Pk

输入格式

第一行,一个整数T(0<T<=10),表示要求矩阵的个数。

接下来有T组数据,每组数据格式如下:

第一行:两个数据n(2<=n<=10)、k(1<=k<=5),两个数字之间用一个空格隔开,其中n表示状况空间的总数,k表示待求的转移概率矩阵的步数。接下来有n行n列个正整数,其中,第i行第j列表示pij,(0<=pij<=10)。另外,数据保证最后结果不会超过10^8。

输出格式

输出为T组数据。

每组数据为已知矩阵的k次幂,格式为:

n行n列个正整数,每行数之间用空格隔开,注意,每行最后一个数后面不应该有多余的空格。

输入样例

3
2 2
9 8
9 3
3 3
4 8 4
9 3 0
3 5 7
5 2
4 0 3 0 1
0 0 5 8 5
8 9 8 5 3
9 6 1 7 8
7 2 5 7 3

输出样例

153 96
108 81
1216 1248 708
1089 927 504
1161 1151 739
47 29 41 22 16
147 103 73 116 94
162 108 153 168 126
163 67 112 158 122
152 93 93 111 97

矩阵幂的运算, 鉴于这题数据小的可怜, 就直接暴力了

下次会补一个高效的代码

注意格式输出



/*
USER_ID: test#birdstorm
PROBLEM: 96
SUBMISSION_TIME: 2014-03-01 23:10:01
*/
#include <stdio.h>
#include <stdlib.h>
#define For(i,m,n) for(i=m;i<n;i++)
 
int a[11][11], b[11][11], c[11][11], n, k;
 
void mul()
{
    int h, i, j, temp;
    while(--k){
        For(h,0,n) For(i,0,n){
            temp=0;
            For(j,0,n) temp+=b[h][j]*a[j][i];
            c[h][i]=temp;
        }
        For(h,0,n) For(i,0,n) b[h][i]=c[h][i];
    }
}
 
main()
{
    int i, j, t;
    scanf("%d",&t);
    while(t--){
        scanf("%d%d",&n,&k);
        For(i,0,n) For(j,0,n) scanf("%d",&a[i][j]),c[i][j]=b[i][j]=a[i][j];
        mul();
        For(i,0,n) For(j,0,n) printf("%d%c",c[i][j],j==n-1?'\n':' ');
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: BUPT对下面矩阵表示的NFA是指北京邮电大学对以矩阵形式表示的非确定有限自动机。 非确定有限自动机(NFA)是一种计算模型,用于描述能够识别特定模式的有限自动机。NFA的特点是在某个状态和某个输入下,可以有多个可能的下一个状态。下面所给的矩阵表示的NFA描述了一种状态转移的可能性。 这个矩阵表示的NFA可以解读如下:每一列表示一个输入符号,每一行表示一个状态。矩阵中的每个元素表示某个状态通过某个输入符号转移到的下一个状态。如果某个元素为空,表示该状态在某个输入符号下无法转移。如果某个状态是终止状态,可以用特殊符号表示。 BUPT对这个矩阵表示的NFA可以进行以下操作和应用:首先,通过读取输入符号,根据矩阵中的转移规则,从起始状态开始逐步转移到下一个状态。如果存在多个可能的转移路径,BUPT可以选择其中任意一条路径。当到达终止状态时,BUPT可以确定该输入是否符合模式。 BUPT可以使用这个矩阵表示的NFA进行模式识别、字符串匹配、语言理解等应用。BUPT还可以基于这个NFA进行进一步的算法设计和性能优化。对于复杂的NFA,BUPT可以使用图论和自动机理论等相关知识对其进行分析和优化。 总而言之,BUPT对下面矩阵表示的NFA进行研究和应用,旨在理解和利用非确定有限自动机的特性,拓展计算机科学领域中的算法设计和模式识别等应用。 ### 回答2: BUPT对下面矩阵表示的非确定有限自动机(NFA)进行如下解读: 下面给出了一个4×3的矩阵表示了一个非确定有限自动机(NFA)的转移函数。每一行对应一个状态,每一列表示从当前状态经过对应的输入符号转移到的可能状态集合。如果转移函数中的某个集合为空集表示该状态在当前输入下没有可达的状态。 我们可以根据矩阵中的内容还原NFA的状态转移图。假设状态集合为Q={q1,q2,q3,q4},输入字母表为Σ={a,b,c},初始状态为q1,接受状态为q4。根据矩阵表示中的信息,我们可以得到以下状态转移关系: - 状态q1通过输入a转移到状态集合{q2,q3},通过输入b转移到状态集合{q4},通过输入c没有可达的状态。 - 状态q2通过输入a转移到状态集合{q1},通过输入b转移到状态集合{q2,q3},通过输入c转移到状态集合{q4}。 - 状态q3通过输入a转移到状态集合{q3},通过输入b转移到状态集合{q4},通过输入c没有可达的状态。 - 状态q4通过输入a没有可达的状态,通过输入b没有可达的状态,通过输入c没有可达的状态。 根据状态转移关系,我们可以绘制出该NFA的状态转移图,其中每个节点表示一个状态,节点之间的边表示状态之间的转移关系,边上的标签表示转移所对应的输入符号。通过对应的NFA的状态转移图,我们可以进一步分析该NFA的功能和行为。 ### 回答3: BUPT 对下面矩阵表示的NFA 是指北京邮电大学(BUPT)对于给定的矩阵表示的非确定有限自动机(NFA)的理解和分析。 NFA,英文全称为 "Nondeterministic Finite Automaton",是一种处理和识别正则语言的计算模型。它由一组有限个状态和一系列的转移规则组成。 对于给定的矩阵表示的NFA,首先我们需要了解这个矩阵表示如何描述NFA的状态和转移规则。通常,对于每一个状态,矩阵的一行会表示该状态在不同输入符号下的转移情况。例如,如果矩阵的第一行表示状态1,第一列表示输入符号'a',那么矩阵中该位置的值表示从状态1经过输入符号'a'后的转移状态。 接下来,BUPT 可以对这个矩阵进行详细分析和理解。他们可以根据矩阵中的数值和布局,分析NFA的状态之间的转移关系,以及它在不同输入符号下的行为。他们可以检查矩阵中是否存在重复的状态,以及是否存在不可达的状态。 此外,BUPT 还可以基于这个矩阵表示的NFA,进行进一步的研究和优化。他们可以利用算法和技术,对NFA的状态和转移进行优化和简化,以提高其自动识别、匹配和处理正则语言的能力。 总而言之,BUPT 对于给定的矩阵表示的NFA,将会对其进行分析、理解和优化,以提高它的执行效率和性能,从而更好地应用于自动识别和处理正则语言的任务中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值