鱼C论坛

 找回密码
 立即注册
查看: 3357|回复: 13

一个简单的问题

[复制链接]
发表于 2020-3-27 21:36:19 | 显示全部楼层 |阅读模式
5鱼币
指针的课后题

已知有一个文件,它的内容是
3
100001 100002 110001 100089
100001 100003 100005
110001 100089
我们要把这个文件读取后,输出以下结果:
100001 110001 100089
对,这个题目就是二维的字符串去重(返回重复的元素)!但题目要求不要定义一个二维数组去存储……




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 22:26:34 | 显示全部楼层
新手表示,C有集合这样的类型吗?若没有,是否可以用 Python 来转换下后处理?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 22:27:55 From FishC Mobile | 显示全部楼层
链表??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-28 10:26:32 | 显示全部楼层
虽然我不是很懂C,但是不是可以定义1维数组吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 14:27:18 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-3-28 10:26
虽然我不是很懂C,但是不是可以定义1维数组吗

可以自己定义一维数组,但是按照二维的方式索引,虽然有点专空子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 14:47:48 | 显示全部楼层
time1970 发表于 2020-3-29 14:27
可以自己定义一维数组,但是按照二维的方式索引,虽然有点专空子

为啥要按照二维的方式索引呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:00:11 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-3-29 14:47
为啥要按照二维的方式索引呢?

自然是方便啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:06:04 | 显示全部楼层

我还真看不出来哪方便
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:12:08 | 显示全部楼层
本帖最后由 time1970 于 2020-3-29 15:15 编辑


那你就按照你自己的想法写,写出来,测试答案,如果想优化,再考虑做一个做成一个通用的集合接口,比如用在检测一个文件中的有哪些单词
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:19:05 | 显示全部楼层
time1970 发表于 2020-3-29 15:12
那你就按照你自己的想法写,写出来,测试答案,如果想优化,再考虑做一个做成一个通用的集合接口,比如 ...

那你先讲讲怎么把一维数组按照二维方式索引喽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:25:15 | 显示全部楼层
本帖最后由 time1970 于 2020-3-29 15:27 编辑
永恒的蓝色梦想 发表于 2020-3-29 15:19
那你先讲讲怎么把一维数组按照二维方式索引喽


自行百度以行主序的数组内存地址计算公式
这里提供二维的 xd + L(C * i + j)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 15:31:26 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-3-29 15:19
那你先讲讲怎么把一维数组按照二维方式索引喽
#include <iostream>

int main()
{
        const int w = 5;
        const int h = 4;
        int *p = new int[4 * 5];
        for(int y = 0; y < h; ++y) {
                for(int x = 0; x < w; ++x) {
                        p[y * h + x] = y + x;
                }
        }
        for(int y = 0; y < h; ++y) {
                for(int x = 0; x < w; ++x) {
                        std::cout << p[y * h + x] << " ";
                }
                std::cout << std::endl;
        }
        delete[] p;
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-8 11:10:16 | 显示全部楼层
有点没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-8 17:26:53 | 显示全部楼层
你可以定义一个结构体
typedef struct MyData
{
     long data;
     int count;
}MYDATA;

依次输入,每次输入遍历数组,查找对比,没有就新增,有相同的data就count+1;最后查看count,就知道哪些重复,哪些没重复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 13:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表