一维数组中相同的数保留一个【问题描述】输入一维数组,将数组中相同的数只保留一个,并输出该数组 input numbers of array:12 33 22 12 15 18 33 33 22 22 17 16 3 5 6 【样例输出】 12 33 22 15 18 17 16 3 5 6 【样例说明】输出的每个数组元素用setw(4)设置域宽 |
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int arr[100];
int n;
cout << "input n of array:";
cin >> n;
cout << "input numbers of array:";
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
int count = 0;
for (int i = 0; i < n-count; i++)
{
for (int j = i+1; j < n-count; j++)
{
if (arr[i] == arr[j])
{
for (int k = j; k < n-count; k++)
{
arr[k] = arr[k + 1];
}
j--;
count++;
}
}
}
for (int i = 0; i <n-count; i++)
{
cout << setw(4) << arr[i];
}
return 0;
}
给一个整型数组编号a【问题描述】 给一个整型数组中的数按从小到大连续编号,要求相同数字编号相同,编号从1开始,输出编号结果时按照原数组元素的顺序输出。 【输入形式】 从控制台输入数据,第一行输入数组元素个数(个数大于等于1,并且小于等于20),第二行输入整型数组元素,各个整数之间以空格分隔。 【输出形式】 在屏幕上输出编号结果,各个编号之间用一个空格分隔。 【样例输入】 7 -3 75 51 90 1118 51 -3 【样例输出】 1 3 2 4 5 2 1 【样例说明】 共输入了7个整数,分别为:-3 75 51 90 1118 51 -3,其编号分别为1 3 2 4 5 2 1,其中有两个-3和51,它们的编号相同 |
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int arr[20];
int n;
cin >> n;
for (int i=0; i < n; i++)
{
cin >> arr[i];
}
int num[20];
memset(num, 0, 20 * sizeof(int));
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (arr[j] == arr[i])
num[i]++;
}
}
for (int i = 0; i < n; i++)
{
int a = 1;
for (int j = 0; j < n; j++)
{
if (num[j] == 0 && arr[i] > arr[j])
a++;
}
cout << a << ' ';
}
return 0;
}
求数组的差集
【问题描述】
从标准输入中输入两行整数(每行不超过20个整数),将第一组中所有出现在第二组中的数字删除(即两整数集相减)。并从小到大排序输出。
【输入形式】
首先输入第一组整数的个数,再输入第一组整数,以空格分隔;然后输入第二组整数的个数,再输入第二组整数,以空格分隔。
【输出形式】
将第一组中所有出现在第二组中的数字删除,按从小到大顺序排序输出,输出整数中间用一个空格隔开。
【样例输入】
8
5 1 4 3 8 7 9 6
4
5 2 8 10
【样例输出】
1 3 4 6 7 9
【样例说明】
第一组整数个数为8,分别为5 1 4 3 8 7 9 6,第二组整数个数为4,分别为5 2 8 10。将第一组中所有出现在第二组中的数字(即数字5和8)删除后结果1 3 4 6 7 9(按从小到大顺序排序)。每个数字中间用一个空格分隔。
#include<iostream>
using namespace std;
int main()
{
int n1;
cin >> n1;
int arr1[20];
for (int i = 0; i < n1; i++)
cin >> arr1[i];
int n2;
cin >> n2;
int arr2[20];
for (int i = 0; i < n2; i++)
cin >> arr2[i];
int num[20];
int count = 0;
for (int i = 0,k=0; i < n1; i++)
{
int flag = 1;
for (int j = 0; j < n2; j++)
{
if (arr1[i] == arr2[j])
flag = 0;
}
if (flag)
{
num[k] = arr1[i];
k++;
count++;
}
}
int finish = 1;
int j = 1;
while (j < count && finish)
{
finish = 0;
for (int k = 0; k < count - j; k++)
{
if (num[k] > num[k + 1])
{
int tmp = num[k];
num[k] = num[k + 1];
num[k + 1] = tmp;
finish = 1;
}
}
j++;
}
for (int i = 0; i < count; i++)
{
cout << num[i] << ' ';
}
return 0;
}
最大连续出现个数
【问题描述】输入n个数,n<=500000,每个数不超过10000,求最多连续出现了多少个相同的数。
【输入形式】
10 5 5 2 2 2 4 5 6 7 8
【输出形式】3
【样例输入】
10 5 5 2 2 2 4 5 6 7 8
【样例输出】
3
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int max = 1;
for (int j = 0; j < n / 500 + 1; j++)
{
int arr[500];
for (int i = 0; i < min(n,500); i++)
cin >> arr[i];
int count = 1;
for (int i = 0; i < min(n, 500) - 1; i++)
{
if (arr[i] == arr[i + 1])
count++;
else
{
if (max < count)
max = count;
count = 1;
}
}
}
cout << max;
return 0;
}
数字方阵一
【问题描述】
输入整数N,输出相应方阵。
【输入形式】
一个整数N。( 1 <= n <= 15 )
【输出形式】
一个方阵,每个数字的场宽为4。
【样例输入】
5
【样例输出】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n * n; i++)
{
cout << setw(4) << i;
if (i % n == 0)
cout << endl;
}
return 0;
}
生成一个n阶螺旋方阵,将其存放到一个二维数组中并输出。
【问题描述】
生成一个n阶螺旋方阵,将其存放到一个二维数组中并输出,要求二维数组空间动态申请。
【输入形式】
输入矩阵大小:5
【输出形式】
1 16 15 14 13
2 17 24 23 12
3 18 25 22 11
4 19 20 21 10
5 6 7 8 9
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n;
cout << "输入矩阵大小:";
cout << endl;
cin >> n;
int** arr = new int* [n];
for (int i = 0; i < n; i++)
arr[i] = new int[n];
int num = 0;
int len = n - 1;
int r = 0;
int c = 0;
while (len >= 1)
{
for (int i=0; i < len; i++)
{
num++;
arr[r][c] = num;
r++;
}
for (int i = 0; i < len; i++)
{
num++;
arr[r][c] = num;
c++;
}
for (int i = 0; i < len; i++)
{
num++;
arr[r][c] = num;
r--;
}
for (int i = 0; i < len; i++)
{
num++;
arr[r][c] = num;
c--;
}
c++;
r++;
len = len - 2;
}
if (len == 0)
arr[r][c] = ++num;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << setw(6) << arr[i][j];
}
cout << endl;
}
return 0;
}