欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组巧用

程序员文章站 2022-07-12 16:40:19
...

标记数组

数组除了可以存储数据外,还可以用来进行标记。

例如 输入N(N<=100)个数,每个数的范围 大于0并且小于等于100,

        将每个不同大小的数从小到大输出且输出它对应的个数。

#include<bits/stdc++.h>
using namespace std;

int f[105]={0}; //数组尽量开在全局
int main()
{
    int n,x;
    scanf("%d",&n);
    for(int i = 0;i < n ; i++)
    {
        scanf("%d" , &x);
        f[i]++;
    }
    for(int i = 0;i < n ; i++)
    {
        if(f[i]>0) scanf("%d %d\n" , i , f[i]);
    }
    return 0;
}

存储地图

数组的使用不一定从0开始,可以从任意下标开始,只要我们使用的时候对应上就行

用二维字符数组存储地图   :        # # # # 

                                                      # . # # 

                                                      # # @ # 

                                                      # # # #  

#include<bits/stdc++.h>
using namespace std;

char mpt[10][10]; 
int main()
{
    for(int i = 1;i <= 4;i++)
     { scanf("%s",mpt[i]+1);
        /*不要用下面这种输出方式,否则会出问题,因为回车也算一个char字符
          for(int j = 1;j <= 4;i++)
            { 
                scanf("%c",mpt[i][j]);
            }  
         */
     }
     for(int i = 0 ; i <=4 ; i++)
      {   
         for(int i = 0 ; i <=4 ; i++) 
          {
            printf("%c",mpt[i][j]);
          } 
       printf("\n");          
                
      }
            
        return 0;
}

数组的嵌套使用

例如 输入N(N<=100)个数,每个数的范围 大于0并且小于等于100,

        将每个不同大小的数从小到大输出且输出它对应的个数


#include<bits/stdc++.h>
using namespace std;

int f[105]={0}; //数组尽量开在全局
int p[105]={0}; //p[i]表示有i个这样的数的最大值是多少
int main()
{
    int n,x;
    scanf("%d",&n);
    for(int i = 0;i < n ; i++)
    {
        scanf("%d" , &x);
        f[i]++;
    }
    for(int i = 0;i < n ; i++)  p[f[i]] = i;
    for(int i = 0;i < n ; i++)
    {
        if(f[i]>0) scanf("%d %d\n" , i , f[i]);
    }
    return 0;
}

 

相关标签: 算法笔记

上一篇: 巧用hash

下一篇: 常用STL