算法训练 删除数组零元素

时间限制:1.0s   内存限制:512.0MB

  从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。输出删除后数组中元素的个数并依次输出数组元素。  样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以空格隔开的5个整数)
  5
  3 4 0 0 2
  样例输出:(输出格式说明:3为非零数据的个数,3 4 2 是以空格隔开的3个非零整数)
  3
  3 4 2

样例输入

7
0 0 7 0 0 9 0

样例输出

2
7 9

样例输入

3
0 0 0

样例输出

0

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[10000000];
int main()
{
    int n,i,ans;
    while(~scanf("%d",&n))
    {
         int t,ans=0;
         for(i=0;i<n;i++)
        {
            scanf("%d",&t);
            if(t!=0)
             {
                 a[ans++]=t;
                  break;
             }
        }
        for(i=i+1;i<n;i++)
        {
            scanf("%d",&t);
            if(t!=0)
            {
                a[ans++]=t;
            }
        }
        printf("%d\n",ans);
        if(ans!=0)
        {
        printf("%d",a[0]);
        for(i=1;i<ans;i++)
           printf(" %d",a[i]);
        printf("\n");
        }

    }
    return 0;
}
时间: 03-19

算法训练 删除数组零元素的相关文章

ALGO-79 删除数组零元素

算法训练 删除数组零元素 时间限制:1.0s   内存限制:512.0MB 从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动.注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数.输出删除后数组中元素的个数并依次输出数组元素. 样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以空格隔开的5个整数)5 3 4 0 0 2样例输出:(输出格式

删除数组零元素

1 #include<stdio.h> 2 #include<stdlib.h> 3 4 //函数声明 5 int CompactIntegers(int *p,int n); 6 7 int main() 8 { 9 int i; 10 int n,n_final; //n:用于记录要输入的整数个数:n_final:用于记录删除数组中的0元素后数组的长度 11 int *p; //用于指向动态分配的数组空间 12 13 scanf("%d",&n);/

蓝桥杯 算法训练 ALGO-57 删除多余括号

算法训练 删除多余括号 时间限制:1.0s   内存限制:512.0MB 问题描述 从键盘输入一个含有括号的四则运算表达式,要求去掉可能含有的多余的括号,结果要保持原表达式中变量和运算符的相对位置不变,且与原表达式等价,不要求化简.另外不考虑'+' '-'用作正负号的情况,即输入表达式不会出现(+a)或(-a)的情形. 输入格式 表达式字符串,长度不超过255, 并且不含空格字符.表达式中的所有变量都是单个小写的英文字母, 运算符只有加+减-乘*除/等运算符号. 输出格式 去掉多余括号后的表达式

蓝桥杯算法训练&lt;一&gt;

一.图形显示[此题虽然简单,但是需啊哟注意的是,每个“*”后边有一个空格] 问题描述 编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数): * * * * * * * * * * * * * * * 1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner mScanner = new Scanner(System.

约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素

#include<iostream> using namespace std; const int size = 1000; void ArrDel() { int arr[size]; //循环结束标志,一直循环到数组中只剩下最后一个元素结束 int currentNum = size; int count = 0; for (int k = 0; k < size; k++) { arr[k] = k; } //currentNum==1表示数组中只剩下最后一个元素 是循环结束的标志

蓝桥杯 算法训练 ALGO-156 表达式计算

算法训练 表达式计算 时间限制:1.0s   内存限制:256.0MB 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的值. 样例输入 1-2+3*(4-5) 样例输出 -4 数据规模和约定 表达式长度不超过100,表达式运算合法且运算过程都在int内进行. 题目解析: 运算优先级: 括号 → 乘除 → 加减 例如 1-2+3*(4-5) (1)计算(4-5),表达式变为  1-2+3*-1 (2

蓝桥杯 算法训练 ALGO-124 数字三角形

算法训练 数字三角形 时间限制:1.0s   内存限制:256.0MB 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形中的数字为整数0,1,-99: . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数. 接下来描述整个三角形 输出格式 最大总和(整数) 样例输入 573 88 1 02 7 4 44 5 2 6 5 样例输出 3

ACM/ICPC算法训练 之 数学很重要-浅谈“排列计数” (DP题-POJ1037)

这一题是最近在看Coursera的<算法与设计>的公开课时看到的一道较难的DP例题,之所以写下来,一方面是因为DP的状态我想了很久才想明白,所以借此记录,另一方面是看到这一题有运用到 排列计数 的方法,虽然排列计数的思路简单,但却是算法中一个数学优化的点睛之笔. Poj1037  A decorative fence 题意:有K组数据(1~100),每组数据给出总木棒数N(1~20)和一个排列数C(64位整型范围内),N个木棒长度各异,按照以下条件排列,并将所有可能结果进行字典序排序 1.每一

蓝桥杯试题 算法训练 安慰奶牛

算法训练 安慰奶牛 时间限制:1.0s   内存限制:256.0MB 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是一个奶牛的家.FJ计划除去P条道路中尽可能多的道路,但是还要保持牧场之间 的连通性.你首先要决定那些道路是需要保留的N-1条道路.第j条双向道路连接了牧场Sj和Ej(1 <= Sj <= N; 1 <= Ej <= N; Sj != Ej),而且走完它需要Lj的时间.

算法训练 最小乘积(基本型)

算法训练 最小乘积(基本型)                         一个数组从大到小排列,一个数组从小到大,相乘起来最小 时间限制:1.0s   内存限制:512.0MB 问题描述 给两组数,各n个. 请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小.要求程序输出这个最小值. 例如两组数分别为:1 3 -5和-2 4 1 那么对应乘积取和的最小值应为: (-5) * 4 + 3 * (-2) + 1 * 1 = -25 输入格式 第一个行一个数T表示数据组数.