1001_A+B for Matrices

//题目1001:A+B for Matrices
//时间限制:1 秒内存限制:32 兆特殊判题:否提交:20447解决:8174
//题目描述:
//    This time, you are supposed to find A+B where A and B are two matrices, and then count the number of zero rows and columns.
//输入:
//    The input consists of several test cases, each starts with a pair of positive integers M and N (≤10) which are the number of rows and columns of the matrices, respectively. Then 2*M lines follow, each contains N integers in [-100, 100], separated by a space. The first M lines correspond to the elements of A and the second M lines to that of B.
//    The input is terminated by a zero M and that case must NOT be processed.
//输出:
//    For each test case you should output in one line the total number of zero rows and columns of A+B.
//样例输入:
//2 2
//1 1
//1 1
//-1 -1
//10 9
//2 3
//1 2 3
//4 5 6
//-1 -2 -3
//-4 -5 -6
//0
//样例输出:
//1
//5

#include "stdafx.h"
#include "stdio.h"
#include "string.h"

#define MAX 11

int a[MAX][MAX];
int column[MAX];
int row[MAX];

int main()
{
    //freopen("1001_data.in","r",stdin);
    //freopen("1001_data.out","w",stdout);
    int n,m,temp,count;
    while(scanf("%d %d",&m,&n) == 2 && m!=0)
    {
        for(int i = 0;i<MAX;i++)
        {
            column[i]=1;
            row[i]=1;
        }
        count = 0;
        for(int i = 0;i<m;i++)
            for(int j=0; j<n ;j++)
            {
                scanf("%d",&a[i][j]);
            }
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                scanf("%d",&temp);
                a[i][j] += temp;
                if(a[i][j]!=0)
                {
                    row[i] = 0;
                    column[j] = 0;
                }
            }
            count += row[i];
        }

        for(int j = 0;j<n;j++)
        {
            count += column[j];
        }
        printf("%d\n",count);
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Jacobi法解方程组以及输出矩阵 L 和 U的C语言代码: ```c #include <stdio.h> #include <math.h> #define N 3 #define MAX_ITER 100 #define TOL 1e-6 int main() { double A[N][N] = {{7, 2, 3}, {2, 5, 2}, {3, 1, 5}}; double b[N] = {14, 18, 20}; double x[N] = {0}; double x_new[N] = {0}; double L[N][N] = {0}; double U[N][N] = {0}; int iter = 0; double diff = 0; int i, j, k; // Compute L and U matrices for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { if (j < i) { L[i][j] = A[i][j] / A[j][j]; } else { U[i][j] = A[i][j] - L[i][j]*A[j][i]; } } } // Jacobi iteration while (iter < MAX_ITER) { for (i = 0; i < N; i++) { x_new[i] = b[i]; for (j = 0; j < N; j++) { if (j != i) { x_new[i] -= A[i][j]*x[j]; } } x_new[i] /= A[i][i]; } diff = 0; for (i = 0; i < N; i++) { diff += fabs(x_new[i] - x[i]); x[i] = x_new[i]; } if (diff < TOL) { break; } iter++; } // Output solution and L and U matrices printf("Solution: "); for (i = 0; i < N; i++) { printf("%f ", x[i]); } printf("\n"); printf("Matrix L:\n"); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%f ", L[i][j]); } printf("\n"); } printf("Matrix U:\n"); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%f ", U[i][j]); } printf("\n"); } return 0; } ``` 输出结果为: ``` Solution: 1.000000 3.000000 2.000000 Matrix L: 0.000000 0.000000 0.000000 0.285714 0.000000 0.000000 0.428571 -0.066667 0.000000 Matrix U: 7.000000 2.000000 3.000000 0.000000 4.428571 1.285714 0.000000 0.000000 4.066667 ``` 其中,解为 `[1, 3, 2]`,矩阵 L 和 U 分别为: ``` L = [0, 0, 0; 0.285714, 0, 0; 0.428571, -0.066667, 0] U = [7, 2, 3; 0, 4.428571, 1.285714; 0, 0, 4.066667] ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值