情報オリンピックワンパス1.5:アレイ(2)

C ++言語の最初の部分

第5章配列

2番目のセクションの2次元配列

1119マトリックス交換行
#include <iostream>
using namespace std;

int main(){
    int a[5][5], m, n;

    for (int i = 0; i < 5; i ++ ) {
        for (int j = 0; j < 5; j ++ ) {
            cin >> a[i][j];
        }
    }

    cin>>m>>n;

    for (int i = 0; i < 5; i ++ ) {
        swap(a[m-1][i], a[n-1][i]);
    }

    for (int i = 0; i < 5; i ++ ) {
        for (int j = 0; j < 5; j ++ ) {
            cout << a[i][j] << ' ';
        }
        cout << endl;
    }

    return 0;
}
1120同じ行の対角線の合計
​#include <cstdio>
using namespace std;

int main(){
    int n, x, y;

    scanf("%d%d%d", &n, &x, &y);

    for (int j = 1; j <= n; j ++ ) printf("(%d,%d) ", x, j);
    printf("\n");

    for (int i = 1; i <= n; i ++ ) printf("(%d,%d) ", i, y);
    printf("\n");

    for (int i = 1; i <= n; i ++ ) {
        for (int j = 1; j <= n; j ++ ) {
            if (j-i == y-x) printf("(%d,%d) ", i, j);
        }
    }
    printf("\n");

    for (int i = n; i >= 1; i -- ) {
        for (int j = 1; j <= n; j ++ ) {
            if (i+j == x+y) printf("(%d,%d) ", i, j);
        }
    }
    printf("\n");

    return 0;
}
1121行列のエッジ要素の合計を計算します
#include <iostream>
using namespace std;

int main(){
    int m, n, a[100][100], sum = 0;

    cin >> m >> n;

    for (int i = 0; i < m; i ++ ) {
        for (int j = 0; j < n; j ++ ) {
            cin >> a[i][j];

            if (i == 0 || i == m-1 || j == 0 || j == n-1) {
                sum += a[i][j];
            }
        }
    }

    cout << sum << endl;

    return 0;
}
1122鞍点を計算する
#include <cstdio>
using namespace std;

int main() {
    int a[5][5];

    for (int i = 0; i < 5; i ++ ) {
        for (int j = 0; j < 5; j ++ ) {
            scanf("%d", &a[i][j]);
        }
    }

    for (int i = 0; i < 5; i ++ ) {
        int max = 0;
        for (int j = 1; j < 5; j ++ ) {
            if (a[i][j] > a[i][max]) max = j;
        }

        int min = 0;
        for (int k = 1; k < 5; k ++ ) {
            if (a[k][max] < a[min][max]) min = k;
        }

        if (min == i) printf("%d %d %d\n", i+1, max+1, a[i][max]);
    }

    return 0;
}
1123画像の類似性
#include <cstdio>
using namespace std;

int main() {
    int n, m, cnt = 0;
    scanf("%d %d", &n, &m);
    int a[105][105], b[105][105];

    for (int i = 1; i <= n; i ++ ) {
        for (int j = 1; j <= m; j ++ ){
            scanf("%d", &a[i][j]);
        }
    }

    for (int i = 1; i <= n; i++ ) {
        for (int j = 1; j <= m; j ++ ) {
            scanf("%d", &b[i][j]);
        }
    }

    for (int i = 1; i <= n; i ++ ) {
        for (int j = 1; j <= m; j ++ ) {
            if ( a[i][j] == b[i][j]) cnt ++;
        }
    }

    printf("%.2f", 100.0 * cnt / (n * m));

     return 0;
}
1124マトリックスの追加
#include <cstdio>
using namespace std;

int main() {
    int n, m, a[105][105], b[105][105];
    scanf("%d %d", &n, &m);

    for (int i = 1; i <= n; i ++ ) {
        for (int j = 1; j <= m; j ++ ) {
            scanf("%d", &a[i][j]);
        }
    }

    for (int i = 1; i <=n ; i ++ ) {
        for (int j = 1; j <= m; j ++ ) {
            scanf("%d", &b[i][j]);
        }
    }

    for (int i = 1; i <= n; i ++ ) {
        for (int j = 1; j <= m; j ++ ) {
            printf("%d ", a[i][j] + b[i][j]);
        }
        printf("\n");
    }

     return 0;
}
1125行列の乗算
#include <cstdio>
using namespace std;

int main() {
    int n, m, k;
    scanf("%d %d %d", &n, &m, &k);
    int a[105][105], b[105][105], c[105][105] = {};

    for (int i = 1; i <= n; i ++ ) {
        for (int j = 1; j <= m; j ++ ){
            scanf("%d", &a[i][j]);
        }
    }

    for (int i = 1; i <= m; i++ ) {
        for (int j = 1; j <= k; j ++ ) {
            scanf("%d", &b[i][j]);
        }
    }

    for (int i = 1; i <= n; i ++ ) {
        for (int j = 1; j <= k; j ++ ) {
            for (int l = 1; l <= m; l ++ ) {
                c[i][j] += a[i][l] * b[l][j];
            }
            printf("%d ", c[i][j]);
        }
        printf("\n");
    }

     ret
1126マトリックス転置
#include <cstdio>
using namespace std;

int main() {
    int n, m, a[105][105];
    scanf("%d %d", &n, &m);

    for (int i = 1; i <= n; i ++ ) {
        for (int j = 1; j <= m; j ++ ) {
            scanf("%d", &a[i][j]);
        }
    }

    for (int i = 1;i <= m; i ++ ) {
        for (int j = 1; j <= n; j ++ ) {
            printf("%d ", a[j][i]);
        }
        printf("\n");
    }

    return 0;
}
1127画像の回転
#include <cstdio>
using namespace std;

int main() {
    int n, m, a[105][105];
    scanf("%d %d", &n, &m);

    for (int i = 1; i <= n; i ++ ) {
        for (int j = 1; j <= m; j ++ ) {
            scanf("%d", &a[i][j]);
        }
    }

    for (int i = 1;i <= m; i ++ ) {
        for (int j = n; j >= 1; j -- ) {
            printf("%d ", a[j][i]);
        }
        printf("\n");
    }

    return 0;
}
1128画像ぼかし処理
#include <cstdio>
using namespace std;

int main() {
    int n, m, a[105][105], b[105][105];
    scanf("%d %d", &n, &m);

    for (int i = 1; i <= n; i ++ ) {
        for (int j = 1; j <= m; j ++ ) {
            scanf("%d", &a[i][j]);
            if (i == 1 || i == n || j == 1 || j == m) {
                b[i][j] = a[i][j];
            }
        }
    }

    double t;
    for (int i = 2; i <= n-1; i ++ ) {
        for (int j = 2; j <= m-1; j ++ ) {
            t = (a[i][j] + a[i-1][j] + a[i+1][j] + a[i][j-1] + a[i][j+1]) / 5.0;
            b[i][j] = (t * 10 + 5) / 10;
        }
    }

    for (int i = 1; i <= n; i ++ ) {
        for (int j = 1; j <= m; j ++ ) {
            printf("%d ", b[i][j]);
        }
        printf("\n");
    }

    return 0;
}

お子さんが4年生以上で、コンピュータープログラミングに興味があり、文化の授業に余裕がある場合は、カスタマーサービス(WeChat ID:xiaolan7321)に連絡して情報学の学習に参加してください。私たちはプロの情報学コンテストのコーチであり、オンラインの少人数クラスの教授法を使用しています。目標は、プログラミングを愛する小中学生が国内外の情報学コンテストで優れた結果を達成できるよう支援することです。

教育機能:

  • オンラインの少人数クラスの教育は、優れたコード基盤を築きます。大規模なクラスで「ついていけない」または「食べるのに十分でない」という問題を避けてください。

  • 豊富な教育経験、学生の知識構造と学習能力に精通し、スケジュールを合理的に調整します。

  • 競技会で練習し、試験や競技会を通じて学生の能力を継続的に向上させます。

おすすめ

転載: blog.csdn.net/davidliule/article/details/106139623