1 条题解

  • 0
    @ 2025-4-14 18:41:37

    C++ :

    #include<stdio.h>
    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    
    int main()
    {
    	int N, M;
    	cin >> N >> M;
    	int *Array = (int *)calloc(N*N, sizeof(int));
    	int *R_Array = (int *)calloc(N*N, sizeof(int));
    	int *R = (int *)calloc(N*N, sizeof(int));
    	for(int i = 0; i < N; i++)
    	{
    		for(int j = 0; j < N; j++)
    		{
    			cin >> Array[i*N+j];
    			R_Array[i*N+j] = Array[i*N+j];
    			R[i*N+j] = Array[i*N+j];
    		}
    	} 
    	if(M == 0)
    	{
    		for(int i = 0; i < N; i++)
    		{
    			for(int j = 0; j < N; j++)
    			{
    				if(i == j) R_Array[i*N+j] = 1;
    				else R_Array[i*N+j] = 0;
    			}
    		}
    	}
    	else
    	{
    		for(int k = 1; k < M; k++)
    	    {
    		    for(int i = 0; i < N; i++)
    	        {
    			    for(int j = 0; j < N; j++)
    			    {
    				    R[i*N+j] = 0;
    				    for(int r = 0; r < N; r++)
    				    {
    					    R[i*N+j] += R_Array[i*N+r] * Array[r*N+j];
    				    }
    			    }
    		    }
    		    for(int i = 0; i < N; i++)
    		    {
    			    for(int j = 0; j < N; j++)
    			    {
    				    R_Array[i*N+j] = R[i*N+j];
    			    }
    	     	}
    	    }
    	}
    	for(int i = 0; i < N; i++)
    	{
    		for(int j = 0; j < N; j++)
    		{
    			if(j == N-1) 
    			{
    				cout << R_Array[i*N+j];
    				break;
    			}
    			cout << R_Array[i*N+j] << " ";
    		}
    		cout << endl;
    	} 
    	free(Array);
    	free(R_Array);
    	free(R);
    	return 0;
    } 
    
    • 1

    【验证型】第11章:指针和数组 矩阵相乘

    信息

    ID
    3042
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者