顺序表1:2006-求奇数的乘积
题目链接
https://acm.hdu.edu.cn/showproblem.php?pid=2006
Problem Description
给你n个整数,求他们中所有奇数的乘积。
Input
输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。
Output
输出每组数中的所有奇数的乘积,对于测试实例,输出一行。
Sample Input
3 1 2 3
4 2 3 4 5
Sample Output
3
15
一:用顺序表
点击查看代码
#include<iostream>
#include<algorithm>
using namespace std;
#define eleType int
struct SequectialList {
eleType* elements;
int size;
int capacity;
};
// 初始化
void initiallizeList(SequectialList* list, int capacity) {
list->elements = new eleType[capacity];
list->size = 0;
list->capacity = capacity;
}
// 销毁
void destroyList(SequectialList* list) {
delete[] list->elements;
}
// 获取顺序表大小
int size(SequectialList* list) {
return list->size;
}
// 是否为空
bool isEmpty(SequectialList* list) {
return list->size == 0; // 空:1,非空:0
}
// 插入元素
void insert(SequectialList* list, int index, eleType element) {
if (index<0 || index>list->size) {
throw std::invalid_argument("Invalid index");
}
if (list->size == list->capacity) {
int newCapacity = list->capacity * 2;
eleType* newElements = new eleType[newCapacity];
for (int i = 0; i < list->size; ++i) {
newElements[i] = list->elements[i];
}
delete[] list->elements;
list->elements = newElements;
list->capacity = newCapacity; // 扩容
}
for (int i = list->size; i > index; --i) {
list->elements[i] = list->elements[i - 1];
}
list->elements[index] = element;
list->size++;
}
// 删除元素
void deleteElement(SequectialList* list, int index) {
if (index < 0 || index >= list->size) {
throw std::invalid_argument("Invalid index");
}
for (int i = index; i < list->size - 1; ++i) {
list->elements[i] = list->elements[i + 1];
}
list->size--;
}
// 根据元素值找下标
int findElements(SequectialList* list, eleType element) {
for (int i = 0; i < list->size; ++i) {
if (list->elements[i] == element) {
return i; // 找到返回下标
}
}
return -1; // 没找到返回 -1
}
// 根据索引找值
eleType getElement(SequectialList* list, int index) {
if (index < 0 || index >= list->size) {
throw std::invalid_argument("Invalid index");
}
return list->elements[index];
}
// 元素修改
void updateElement(SequectialList* list, int index, eleType value) {
if (index < 0 || index >= list->size) {
throw std::invalid_argument("Invalid index");
}
list->elements[index] = value;
}
int main() {
int n;
while (cin >> n) {
SequectialList s;
initiallizeList(&s, 1);
int x;
for (int i = 0; i < n; ++i) {
cin >> x;
insert(&s, i, x);
}
int prod = 1;
for (int i = 0; i < size(&s); ++i) {
int ret = getElement(&s, i);
if (ret %2==1) {
prod *= ret;
}
}
cout << prod << endl;
}
}
二:用数组
点击查看代码
#include<iostream>
using namespace std;
int a[10000];
int main() {
int n;
while (cin >> n) {
int x;
for (int i = 0; i < n; ++i) {
cin >> x;
a[i] = x;
}
int prod = 1;
for (int i = 0; i < n; ++i) {
int ret = a[i];
if (ret %2==1) {
prod *= ret;
}
}
cout << prod << endl;
}
}

浙公网安备 33010602011771号