当前位置: 首页 > article >正文

可变列二维数组【C语言】

废话不多说,直接看代码。

可能在这题上用的上:

P2058 [NOIP 2016 普及组] 海港https://www.luogu.com.cn/problem/P2058

int N;
	scanf("%d", &N); //确定行数
	int **a = malloc(N * sizeof(int*));
	for (int i = 0; i < N; i++) {
		int size;//确定该行列数
		scanf("%d", &size);
		int *temp = malloc((size + 1) * sizeof(int));
		for (int i = 1; i <= size; i++) {
			scanf("%d", &temp[i]);
		}
		temp[0] = size; //让首元素记录所在行列数
		a[i] = temp;
	}
	for (int i = 0; i < N; i++) {
		free(a[i]);
	}
	free(a);

当然,使用malloc分配内存要检验是否分配成功,为了清晰明了,便不在代码中出现了。 

对海港这题的简陋解法:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main() {
	int mark[100005];
	memset(mark, 0, sizeof(mark));
	int N, num = 0, left = 0, right = 0;
	int q[100005];
	long long timeSum[100005];
	memset(timeSum, 0, sizeof(timeSum));
	scanf("%d", &N);
	int *tempdata[100005],top1=0;
	int tempdatasize[100005];
	memset(tempdatasize,0,sizeof(tempdatasize));
	for (int z = 0; z < N; z++) {
		int Time, Num;
		int mark_temp[100005];
		memset(mark_temp, 0, sizeof(mark_temp));
		scanf("%d %d", &Time, &Num);
		q[right++] = Time;
		int temp1[Num+1],num_temp=0;
		for (int i = 0; i < Num; i++) {
			int temp;
			scanf("%d", &temp);
			if (mark[temp] == 0) {
				num++;
				mark[temp] = 1;
			}
			if (mark_temp[temp] == 0) {
				timeSum[temp] += Time;
				mark_temp[temp] = 1;
				temp1[num_temp++]=temp;
			}
		}
		int *a=(int*)malloc(num_temp*sizeof(int));
		tempdatasize[top1]=num_temp;
		tempdata[top1++]=a;
		for(int i=0;i<num_temp;i++){
			a[i]=temp1[i];
		}
		while (right >= left && q[right - 1] - q[left] >= 86400) {
			for (int i = 0; i < tempdatasize[left]; i++) {
				timeSum[tempdata[left][i]] -= q[left];
				if (timeSum[tempdata[left][i]] == 0) {
					num--;
					mark[tempdata[left][i]] = 0;
					free(tempdata[left]);
				}
			}
			left++;
		}
		printf("%d\n", num);
	}
	return 0;
}


http://www.kler.cn/a/552930.html

相关文章:

  • 内网常见问题处理
  • java数据结构_优先级队列(堆)_6.1
  • 开源元搜索引擎SearXNG:使用Docker详细搭建部署与使用
  • 【OS安装与使用】part4-ubuntu22.04安装anaconda
  • 【R语言】绘图
  • ONNX Runtime 与 CUDA、cuDNN 的版本对应
  • “三次握手”与“四次挥手”:TCP传输控制协议连接过程
  • 在Kubernetes上部署DeepSeek-R1进行高效AI推理
  • C#```
  • 一文读懂Docker之Docker Compose
  • 论文笔记-WSDM2024-LLMRec
  • 02.19 构造函数
  • MYSQL数据库特殊查询-INFORMATION_SCHEMA
  • 鉴源实验室·智能网联汽车协议数据传输安全分析与防护
  • Word Embeddings
  • 【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
  • VSCode 中 Git 添加了多个远端,如何设置默认远端
  • QT C++ new QTableWidgetItem 不需要删除指针
  • Leetcodehot100(链表篇)
  • N-bit ADC过采样和L阶噪声整形后的SQNR表达式