数组巧用
程序员文章站
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;
}