zoukankan      html  css  js  c++  java
  • 矩阵

    根据条件求任意子矩阵

    #include<stdio.h>
    #include<string.h>
    # define N 1100
    int a[N][N];
    typedef struct data
    {
        int x, y, da;
    }DATA;
    DATA d[30];
    void Start()
    {
        int i, j;
        for (i = 1; i < N; i++)
        {
            for (j = 1; j < N; j++)
                a[i][j] = a[i-1][j] + a[i][j-1] + i + j - a[i-1][j-1];
        }
    }  //把每一个从(1,1)开始的矩阵的元素和记录下来
    int main ()
    {
        Start();
        int T, n, m, k, K, i, p, q, r, s, sum, flag;
        char ch;
        scanf("%d", &T);
        while (T--)
        {
            K = 0;
            scanf("%d %d %d", &n, &m, &k);
            while (k--)
            {
                flag = 1;
                sum = 0;
                scanf(" %c %d %d %d", &ch, &p, &q, &r);
                if (ch == 'Q')
                {
                    scanf("%d", &s);
                    sum = a[r][s] - a[p-1][s] - a[r][q-1] + a[p-1][q-1];  //现将未改动的矩阵和求出
                    for (i = 0; i < K; i++)
                    {
                        if (d[i].x >= p && d[i].x <= r && d[i].y >= q && d[i].y <= s)  //查询该子矩阵中元素是否有改动
                        {
                            sum -= d[i].x;
                            sum -= d[i].y;
                            sum += d[i].da;
                        }  //若有改动则改变sum的值
                    } 
                    printf("%d ", sum);
                }
                else if (ch == 'M')
                {
                    for (i = 0; i < K; i++)
                    {
                        if (d[i].x == p && d[i].y == q)
                        {
                            flag = 0;
                            break;
                        }  //查询结构体中已有的元素中是否有此次输入的数据
                    }
                    if (flag == 1)
                    {
                        d[K].x = p;
                        d[K].y = q;
                        d[K].da = r;
                        K++;
                    }  //如果没有就将该数据加入结构体
                    else
                    {
                        d[i].x = p;
                        d[i].y = q;
                        d[i].da = r;
                    }  //如果有就将结构体相同位置的元素改成此次输入的数据
                }
            }
        }
        return 0;
    }

  • 相关阅读:
    NER(HMM实现)
    embedding(keras,word2vec)
    Word2Vec
    nlp文本转化方式小结
    文本向量化(欧氏距离,哈夫曼距离,L1,L2,TF-IDF)
    文件读取与保存(nlp,json)
    python调用大漠插件教程05字库
    Linux重定向与管道
    Linux文件句柄数调整
    HDFS命令实现分析
  • 原文地址:https://www.cnblogs.com/syhandll/p/4444610.html
Copyright © 2011-2022 走看看