首页 > 其他分享 >MT1411-MT1420 码题集 (c 语言详解)

MT1411-MT1420 码题集 (c 语言详解)

时间:2024-11-03 13:19:24浏览次数:5  
标签:MT1411 scanf 元素 ++ int MT1420 数组 码题 array

目录

        MT1411·顺时针旋转数组

        MT1412·合并

        MT1413·并集

        MT1414·数组的交集

        MT1415·大小相同

        MT1416·最长子数组

        MT1417·连续子序列

        MT1418·元素和

        MT1419·数组最值

        MT1420·中值


MT1411·顺时针旋转数组

 C language code implementation

#include <stdio.h>

void rotateArray(int array[], int N, int M) {
    M = M % N; //计算有效反转次数
    int result[N];

    // 将最后M个元素放在新数组的开头
    for (int i = 0; i < M; i++) {
        result[i] = array[N - M + i];
    }

    // 将剩余元素移动到新数组的后面
    for (int i = 0; i < N - M; i++) {
        result[M + i] = array[i];
    }

    // 将新数组的内容复制到原数组
    for (int i = 0; i < N; i++) {
        array[i] = result[i];
    }
}

int main() {
    int N, M;
    scanf("%d %d", &N, &M);
    int array[N];
    for (int i = 0; i < N; i++) {
        scanf("%d", &array[i]);
    }

    rotateArray(array, N, M);

    for (int i = 0; i < N; i++) {
        printf("%d ", array[i]);
    }

    return 0;
}

MT1412·合并

 

 C language code implementation

#include <stdio.h>

void merge_sorted_arrays(int A[], int sizeA, int B[], int sizeB, int C[]) {
    int i = 0, j = 0, k = 0;

    // merge two arrays
    while (i < sizeA && j < sizeB) {
        if (A[i] < B[j]) {
            C[k++] = A[i++];
        } else {
            C[k++] = B[j++];
        }
    }
    // 复制剩余的元素
    while (i < sizeA) {
        C[k++] = A[i++];
    }
    while (j < sizeB) {
        C[k++] = B[j++];
    }
}

int main() {
    int N, M;
    scanf("%d %d", &N, &M);
    int arrayA[N], arrayB[M];
    for (int i = 0; i < N; i++) {
        scanf("%d", &arrayA[i]);
    }

    for (int i = 0; i < M; i++) {
        scanf("%d", &arrayB[i]);
    }
    int arrayC[N + M];
    merge_sorted_arrays(arrayA, N, arrayB, M, arrayC);

    for (int i = 0; i < N + M; i++) {
        printf("%d ", arrayC[i]);
    }

    return 0;
}

MT1413·并集

 

 C language code implementation

#include <stdio.h>

#define MAX_SIZE 200 // A和B的最大长度总和

int main() {
    int N, M;
    int A[100], B[100]; // A和B的最大长度都是小于100
    int unionArr[MAX_SIZE]; // 存放并集的数组
    int unionCount = 0; // 并集的元素个数

    // 输入数组长度N和M
    scanf("%d %d", &N, &M);

    // 输入数组A的元素
    for (int i = 0; i < N; i++) {
        scanf("%d", &A[i]);
    }

    // 输入数组B的元素
    for (int i = 0; i < M; i++) {
        scanf("%d", &B[i]);
    }

    // 构建并集
    // 将A的元素加入并集
    for (int i = 0; i < N; i++) {
        // 检查是否已经在并集中
        int found = 0;
        for (int j = 0; j < unionCount; j++) {
            if (A[i] == unionArr[j]) {
                found = 1;
                break;
            }
        }
        // 如果没有找到,添加到并集中
        if (!found) {
            unionArr[unionCount++] = A[i];
        }
    }

    // 将B的元素加入并集
    for (int i = 0; i < M; i++) {
        // 检查是否已经在并集中
        int found = 0;
        for (int j = 0; j < unionCount; j++) {
            if (B[i] == unionArr[j]) {
                found = 1;
                break;
            }
        }
        // 如果没有找到,添加到并集中
        if (!found) {
            unionArr[unionCount++] = B[i];
        }
    }

    // 输出并集元素的个数
    printf("%d", unionCount);

    return 0;
}

MT1414·数组的交集

 

 C language code implementation

#include <stdbool.h>
#include <stdio.h>

#define MAX_SIZE 100

int intersection_arrays(int A[], int sizeA, int B[], int sizeB) {
    bool hashTable[MAX_SIZE] = {false}; // 哈希表 用于存储 a 元素
    int count = 0;

    // 将数组 a 的元素存入哈希表
    for (int i = 0; i < sizeA; i++) {
        if (A[i] >= 0 && A[i] < MAX_SIZE) {
            hashTable[A[i]] = true; // 标记元素存在
        }
    }

    for (int j = 0; j < sizeB; j++) {
        if (B[j] >= 0 && B[j] < MAX_SIZE && hashTable[B[j]]) {
            count++; // 计算交集的元素
            hashTable[B[j]] = false; // 确保每个元素只计属于一次
        }
    }
    return count; // 返回个数
}

int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    int arrayA[n], arrayB[m];
    for (int i = 0; i < n; i++) {
        scanf("%d", &arrayA[i]);
    }
    for (int i = 0; i < m; i++) {
        scanf("%d", &arrayB[i]);
    }

    int count = intersection_arrays(arrayA, n, arrayB, m);
    printf("%d", count);

    return 0;
}

MT1415·大小相同

 C language code implementation

#include <math.h>
#include <stdbool.h>
#include <stdio.h>

int main() {
    int A[10] = {0};
    bool iscount[10] = {false}; // 初始化为 false
    int n, num = 0;

    // 读取元素数量
    scanf("%d", &n);
    
    // 读取元素到数组中
    for (int i = 0; i < n; i++) {
        scanf("%d", &A[i]);
    }

    // 计算不同元素的非空子集数量
    for (int i = 0; i < n; i++) {
        if (iscount[i]) {
            continue; // 如果已经计数过,跳过
        }
        int count = 1; // 开始计数当前元素
        iscount[i] = true; // 标记当前元素为已计数

        // 检查重复元素
        for (int j = i + 1; j < n; j++) {
            if (A[i] == A[j]) {
                count++;
                iscount[j] = true; // 标记重复元素为已计数
            }
        }
        // 计算该元素的非空子集数量
        num += (int)(pow(2, count) - 1);
    }

    // 输出结果
    printf("%d\n", num);
    return 0;
}

MT1416·最长子数组

 

C language code implementation

#include <stdio.h>
int main() {
    int N, K;
    int A[100]; // array size < 100

    // input array size n and maximum allowed even elements K
    scanf("%d %d", &N, &K);
    // input array element
    for (int i = 0; i < N; i++) {
        scanf("%d", &A[i]);
    }

    int evenCount = 0; //  count the number of  even elements
    int maxLength = 0; // the length of longest length array

    for (int i = 0; i < N; i++) {
        if (A[i] % 2 == 0) {
            evenCount++; // if even numvber ++
        }
        if (evenCount > K) {
            break;
        }
        maxLength = i + 1;
    }
    printf("%d\n", maxLength);

    return 0;
}

MT1417·连续子序列

 

 C language code implementation

#include <stdio.h>
int main() {
    int N;
    long long M;
    int A[100];
    scanf("%d %lld", &N, &M);
    for (int i = 0; i < N; i++) {
        scanf("%d", &A[i]);
    }
    //   计数
    int count = 0;
    //   遍历所有可能
    for (int start = 0; start < N; start++) {
        long long product = 1;
        for (int end = start; end < N; end++) {
            product *= A[end];
            if (product > M) {
                break;
            }
            count++;
        }
    }
    printf("%d\n", count);
    return 0;
}

MT1418·元素和

 

 C language code implementation

#include <stdio.h>
int main() {
    int length, sum = 0;
    scanf("%d", &length);
    int array[length];
    for (int i = 0; i < length; i++) {
        scanf("%d", &array[i]);
        sum += array[i];
    }
    printf("%d", sum);
    return 0;
}

MT1419·数组最值

 

C language code implementation

#include <stdio.h>
#include <limits.h> // 引入 limits.h 以使用 INT_MAX 和 INT_MIN

int main() {
    int length;
    int max = INT_MIN; // 初始化为最小整数
    int min = INT_MAX; // 初始化为最大整数

    // 输入数组长度
    scanf("%d", &length);
    int array[length];

    // 输入数组元素
    for (int i = 0; i < length; i++) {
        scanf("%d", &array[i]);
    }

    // 遍历数组,找出最大值和最小值
    for (int i = 0; i < length; i++) {
        if (max < array[i]) {
            max = array[i];
        }
        if (min > array[i]) {
            min = array[i];
        }
    }

    // 输出最大值和最小值
    printf("%d %d\n", max, min);
    return 0;
}

MT1420·中值

C language code implementation

 

#include <stdio.h>

void sort(int array[], int N) {
    for (int i = 0; i < N - 1; i++) {
        for (int j = 0; j < N - i - 1; j++) {
            if (array[j] > array[j + 1]) {
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

int main() {
    int N;
    scanf("%d", &N);
    int array[N];
    for (int i = 0; i < N; i++) {
        scanf("%d", &array[i]);
    }
    sort(array, N);
    int median;
    // 如果是偶数
    if (N % 2 == 0) {
        median = (array[N / 2 - 1] + array[N / 2]) / 2;
    } else {
        // 如果是奇数
        median = array[N / 2];
    }
    printf("%d", median);
    return 0;
}

标签:MT1411,scanf,元素,++,int,MT1420,数组,码题,array
From: https://blog.csdn.net/xinfanyyds/article/details/143464268

相关文章

  • 大模型面试手撕代码题1——梯度下降
    本文以线性回归作为出发点开始我们的梯度下降的讲解为了让本文读者理解的更加清晰,我顺着思路一步步给各位读者讲一下第一步:导包(这一步必须的)importnumpyasnpimportpandasaspdfromtqdmimporttqdmimportmatplotlib.pyplotasplt第二步:为了完成本次的梯度下降算......
  • MT1371-MT1380 码题集 (c 语言详解)
    目录        MT1371·所有路径        MT1372·矩阵清零        MT1373·亲和数         MT1374·Pronic数         MT1375·4和7的序列        MT1376·小码哥的数学        MT1377·模乘逆元      ......
  • MT1351-MT1360 码题集 (c 语言详解)
    MT1351·用函数判断素数c语言代码实现#include<stdio.h>intisPrime(intnum){if(num<=1)return0;for(inti=2;i*i<=num;i++){if(num%i==0){return0;}}return1;}intmain(){......
  • MT1311-MT1320 码题集 (c 语言详解)
    MT1311·组数c语言实现代码#include<stdio.h>intmain(){intcount=0;//用来记录个数//遍历所有可能的三位数//外层循环:遍历第一位范围是1~9确保第一位不能为0for(inti=1;i<=9;i++){//中层循环:遍历第二位范围是0......
  • MT1301-MT1310 码题集 (c 语言详解)
    MT1301·1的补码c语言代码实现#include<stdio.h>intmain(){longn=0;longb=0;scanf("%ld",&n);inti=0;//while(b<n){b=b*16+0xf;}printf("%ld",b-n);return......
  • P1928 外星密码题解
    初看这题时,感觉就是一个简简单单的递归,便有了以下代码:#include <bits/stdc++.h>using namespace std;string re(){    string s="",s1="";    char c;    int n;    while(cin>>c){        if(c=='['){            cin>>n;......
  • 面试速通-SQL编码题
    〇、前话SQL题是数据相关的面试无可避免的小BOSS,虽然不同公司面试出题会披上不同的马甲,侧重各异,但总结起来题型就是那4、5种。下面让我们花上几分钟一起来通关它吧!一、连续日期计算1,例题表字段:用户ID,账户余额,系统余额日期。求出余额大于1000的用户的最大连续天数。2,解题要......
  • 【码题集】习题
    目录史莱姆融合松鼠接松果 新月轩就餐 史莱姆融合根据题意就是一道集合合并的题,所以要用并查集,不过最后我们要输出整个序列,所以要在合并的时候维护一个链表,以便最终合并成一个大集合的时候,输出整个链表就是答案。不过这里有一点要注意,就是我们在更新链表的时候是把......
  • 代码题答案
    importjava.util.Random;publicclassMain{publicstaticvoidcharCode(){StringBuildersb=newStringBuilder();Randomrandom=newRandom();for(inti=0;i<5;i++){intrandomCharType=random.nextlnt(2);/随机选择大小写if(randomCharType==0){/......
  • 【408精华知识】史上最全的数据结构代码题总结!三万字长文!!!
    关于数据结构代码题,可以说是让很多同学感到头疼了,书上的代码太繁琐、网上的总结不全面让大家对代码题感到云里雾里,那么这篇文章可能会给大家带来一点启发,因为我自己也是深受代码题的折磨,所以一直想写一篇有关它的总结,希望能够做到全面、简洁,让大家用最快的速度记住代码书......