【C刷题】矩阵相等判断与序列中删除指定的数字(下)

简介: 【C刷题】矩阵相等判断与序列中删除指定的数字(下)

方法2:在接收过程中直接比较

80942713eb1c4e74a2d1b5398493357c.png

int main() {
    int n=0;
    int m=0;
    scanf("%d %d",&n,&m);
    int arr1[n][m];
    int i=0;
    int j=0;
 //接收第一个数组的内容
    for(i=0;i<n;i++)
    {
          for(j=0;j<m;j++)
       {
          scanf("%d",&arr1[i][j]);
       }
    } 
    //接收第2个数组的内容,并比较
   int tmp=0;
   int flag=1;//假设是相等的
    for(i=0;i<n;i++)
    {
      for(j=0;j<m;j++)
       {
          scanf("%d",&tmp);
          if(tmp != arr1[i][j])
           {
             flag=0;
             goto end;
           }
       }
    }
end:
    if(flag==1)
    printf("Yes\n");
      else
      printf("No\n");
    return 0;
}

执行:

4bbf090c6ca2464fa5a85f24e7872370.png


BC98 - 序列中删除指定的数字


方法1:把要删除的元素改为0

思路:

1.先定义数组大小为n,接着通过for循环输入数组的元素。

2.定义变量del作为要删除的元素,输入要删除的元素。遍历数组,若此刻arr[i]遇到del,则把arr[i]改成0

3.把输入的数组里面不为0的元素全打印了。

a375cbaf0662457ab7df52d4a0115971.png

int main() {
   int n=0;
   int m=0;
   scanf("%d",&n);
   int arr[n];
   int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    int del=0;
    scanf("%d",&del);
   for(i=0;i<n;i++)
   {
        if(arr[i]==del)
            arr[i]=0;//将要删除的元素改为0
   }
    for(i=0;i<n;i++)
      {
    if(arr[i]!=0)//打印不是0的元素
      {
        printf("%d ",arr[i]);
      }
   }
    return 0;
}

f0c4b38dab1040f3b35a6f1711c7a74d.png


方法2:打印不用删除的元素

思路:输入要删除的元素del之后,直接打印数组,用一个判断条件跳过要删除的元素,打印其它不用删除的。

int main() {
   int n=0;
   int m=0;
   scanf("%d",&n);
   int arr[n];
   int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    int del=0;
    scanf("%d",&del);
    for(i=0;i<n;i++)
   {
    if(arr[i]!=del)
      {
        printf("%d ",arr[i]);
      }
   }
    return 0;
}


ab58c82764604015ad32ab4500023aec.png


方法3:定义两个下标 i 和 j(动图演示)

动图演示的过程:

a82e0ce82d2047d99cea3e55c7a6b808.gif

#include<stdio.h>
int main()
{
   int n=0;
   //int m=0;
   scanf("%d",&n);
   int arr[n];
    int i=0;
    int j=0;
    for(i=0;i<n;i++)
      {
        scanf("%d",&arr[i]);
      }
     int del=0;
     scanf("%d",&del);
     for(i=0;i<n;i++)
     {
       if(arr[i]!=del)
        {
            arr[j++]=arr[i];
        }
      }
     for(i=0;i<j;i++)
        {
            printf("%d ",arr[i]);
        }
      return 0;
}

c69fd5ceeab142e19025d8f410b4cbb2.png

本篇结束,若有错误,欢迎大家指正,感谢支持!

相关文章
【Leetcode -441.排列硬币 -448.找到所有数组中消失的数字】
【Leetcode -441.排列硬币 -448.找到所有数组中消失的数字】
40 0
|
6月前
|
存储 C语言
牛客网刷题总结(1.有序序列判断,2.获得月份天数,3.矩阵相等判定,4.矩阵转换,5.井字棋判断输赢,6.递归进行进制转化)
牛客网刷题总结(1.有序序列判断,2.获得月份天数,3.矩阵相等判定,4.矩阵转换,5.井字棋判断输赢,6.递归进行进制转化)
75 0
|
6月前
|
算法 Java C++
数据结构与算法面试题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。(提示:使用动态规划或者中心扩散)
数据结构与算法面试题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。(提示:使用动态规划或者中心扩散)
83 0
|
6月前
LeetCode(1)-找出数组中重复的数字
LeetCode(1)-找出数组中重复的数字
26 0
|
C语言
【C刷题】矩阵相等判断与序列中删除指定的数字(上)
【C刷题】矩阵相等判断与序列中删除指定的数字(上)
剑指offer-2.不修改数组找出重复的数字
剑指offer-2.不修改数组找出重复的数字
46 0
​判断给定字符序列是否是回文
​判断给定字符序列是否是回文
77 0
剑指offer 02. 不修改数组找出重复的数字
剑指offer 02. 不修改数组找出重复的数字
63 0
序列中删除指定的数字(普通法、双指针法)
序列中删除指定的数字(普通法、双指针法)
|
存储 算法 Java
LeetCode 找出数组中重复的数字
LeetCode 找出数组中重复的数字