创新工厂面试题详解 我的代码

创新工厂面试题详解:共打了多少鱼 -- 正解 递归求解法 今天看了一篇博文创新工场面试题详解题目:abcde五人打渔,打完睡觉,a先醒来,扔掉1条鱼,把剩下的均分成5分,拿一份走了;b再醒来,也扔掉1条,把剩下的均分成5份,拿一份走了;然后cde都按上面的方法取鱼。问他们一共打了多少条鱼?       许多小朋友都参与其中,挺有意思, 阅读详情

原贴 http://blog.youkuaiyun.com/nokiaguy/article/details/6800209#cpp

 运行结果:

1 people caught 2 fishes
        People[00] took 1 fishes within total 2 fishes


2 people caught 7 fishes
        People[00] took 3 fishes within total 7 fishes
        People[01] took 1 fishes within total 3 fishes


3 people caught 25 fishes
        People[00] took 8 fishes within total 25 fishes
        People[01] took 5 fishes within total 16 fishes
        People[02] took 3 fishes within total 10 fishes


4 people caught 253 fishes
        People[00] took 63 fishes within total 253 fishes
        People[01] took 47 fishes within total 189 fishes
        People[02] took 35 fishes within total 141 fishes
        People[03] took 26 fishes within total 105 fishes


5 people caught 3121 fishes
        People[00] took 624 fishes within total 3121 fishes
        People[01] took 499 fishes within total 2496 fishes
        People[02] took 399 fishes within total 1996 fishes
        People[03] took 319 fishes within total 1596 fishes
        People[04] took 255 fishes within total 1276 fishes


6 people caught 46651 fishes
        People[00] took 7775 fishes within total 46651 fishes
        People[01] took 6479 fishes within total 38875 fishes
        People[02] took 5399 fishes within total 32395 fishes
        People[03] took 4499 fishes within total 26995 fishes
        People[04] took 3749 fishes within total 22495 fishes
        People[05] took 3124 fishes within total 18745 fishes


7 people caught 823537 fishes
        People[00] took 117648 fishes within total 823537 fishes
        People[01] took 100841 fishes within total 705888 fishes
        People[02] took 86435 fishes within total 605046 fishes
        People[03] took 74087 fishes within total 518610 fishes
        People[04] took 63503 fishes within total 444522 fishes
        People[05] took 54431 fishes within total 381018 fishes
        People[06] took 46655 fishes within total 326586 fishes


Press any key to continue . . .

 代码:

// Fish.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <assert.h>

#include <vector>
using std::vector;


static bool IsExpected(int Fish, int People)
{
	if (Fish <= 1)
	{
		return false;
	}
	return ((Fish - 1) % People == 0);
}

//-1 means fish count error 
static int GetNextFish(int Fish, int People)
{
	assert(IsExpected(Fish, People));
	int NextFish = (People - 1) * (Fish - 1) / People;
	return (IsExpected(NextFish, People)? NextFish : -1);
}

static int GetAnValiadFish(int kk, int People)
{
	return (People * kk + 1);
}

static bool TestValidFishCount(int Fish, int People, vector<int>& vecFish)
{
	vecFish.clear();

	if (!IsExpected(Fish, People))
	{
		return false;
	}
	vecFish.push_back(Fish);

	bool bret = true;
	for (int ii=1; ii<People; ++ii)
	{
		Fish = GetNextFish(Fish, People);
		if (Fish < 0)
		{
			bret = false;
			break;
		}
		vecFish.push_back(Fish);
	}

	return bret;
}

static void PrintResults(int People, int Fish, const vector<int>& vecFish)
{
	_ftprintf_s(stdout, L"%d people caught %d fishes" L"\r\n", People, Fish);
	for (size_t ii=0; ii<vecFish.size(); ++ii)
	{
		_ftprintf_s(stdout, L"\t" L"People[%02d] " L"took %d fishes within total %d fishes" L"\r\n", ii, (vecFish[ii]-1)/People, vecFish[ii]);
		
	}
	_ftprintf_s(stdout, L"\r\n\r\n");
}

static int GetTotalFish(int People, vector<int>& vecFish)
{
	int kk = 1;
	int Fish = 0;
	for (;;)
	{
		Fish = GetAnValiadFish(kk, People);
		if (TestValidFishCount(Fish, People, vecFish))
		{
			break;
		}
		++kk;
	}
	return Fish;
}

int _tmain(int argc, _TCHAR* argv[])
{
	for (int People = 1; People < 8; ++People)
	{
		vector<int> vecFish;
		int Fish = GetTotalFish(People, vecFish);
		PrintResults(People, Fish, vecFish);
	}

	return 0;
}


 

【高频考点精讲】JavaScript中的工厂模式:从简单工厂到抽象工厂 🧑‍🏫:全栈老李📅:2025 年 5 月🧑‍💻:前端初学者、进阶开发者🚀:本文由全栈老李原创,转载请注明出处。今天咱们聊聊JavaScript设计模式中的工厂模式。作为前端工程师,你可能每天都在用工厂模式却浑然不觉。就像全栈老李我当年第一次听说"工厂模式"时一脸懵逼,后来才发现原来早就在用jQuery的$()这种工厂函数了。。就像你去麦当劳点餐,不需要知道汉堡是怎么做的,只要告诉收银员"我要一个巨无霸",厨房就会给你生产出来。工厂模式就是代码世界的厨房。 阅读详情

相关推荐

探索Python融合地学:一文解决osgeo库安装失败问题

总结一下,要安装osgeo模块,关键在GDAL依赖库的安装,如果能够顺利安装GDAL依赖库,因其是osego的模块,因此osgeo的部分模块也能够得到自动安装,此时再运行代码,发现代码并不报错,能够正常运行了。第一步,我们要安装imagecodecs库,它支持多种常见的图像格式,当然也包含我们的目标tif格式,为方便后续的图像处理和安装osgeo模块,先安装此库。目前GDAL已经更新到了3.10版本,这里主要看你的Python版本是上面,小编用的是Python3.13,电脑是64位的,因此,我们选择。

Promising_GEO的博客 5461

创新工厂面试题详解:共打了多少鱼

最近看到一个创新工厂的面试题,很有意思,下面给出算法实现(Java代码)。如果哪位有更好的算法,请跟贴。        abcde五人打渔,打完睡觉,a先醒来,扔掉1条鱼,把剩下的分成5分,拿一份走了;b再醒来,也扔掉1条,把剩下的分成5份,拿一份走了;然后cde都按上面的方法取鱼。问他们一共打了多少条鱼,写程序和算法 共打了多少条鱼的结果有很多。但求最少打的鱼的结果是3121条鱼

1110

win10 运行lisflood_8踩过的坑

1、安装cuda及VS2019 https://www.bilibili.com/read/cv7335974/ 2、netcdf.h头文件找不到问题 https://www.cnblogs.com/lyggqm/p/12926974.html https://blog.youkuaiyun.com/u011954296/article/details/54617048 3、编码问题 https://blog.youkuaiyun.com/qq_33485434/article/details/81196843 4、

我的笔记 4115

工厂模式面试题

格式说明:使用Markdown标题(#)、列表(-)、代码块(```)增强可读性,便于快速浏览。- 实现:`FileLogger`、`DbLogger`、`ConsoleLogger`。2. 抽象工厂“产品族”误区:混淆产品族(一组相关产品)与产品等级(同类不同实现)。- 定义 `Logger` 接口(`log(message)`)。- 适用场景:产品类型固定、无需频繁扩展(如日志处理器)。- 定义:创建一组相关或依赖的产品族(如跨平台UI组件)。- 缺点:违反开闭原则(新增产品需修改工厂类)。

你是人间四月天 492

AI自瞄原理剖析(一)屏幕内容循环截取及代码实现

尽管Yolo框架在推理时其实是可以输入不同大小的图片的,但这些作者大多不会去处理图像尺寸的改变,所以目前大部分开源源码主要是以输入320或者640尺寸的图像为主。只要截图的效率足够快,能够满足一秒采集60张图片,也就是稳定的截图速度达到60帧以上,那么就可以实现内存级别的AI锁死自瞄效果。这里强调了截图速度对于最终实现特定自瞄效果的重要性,只有达到这样的速度标准,才能让整个自瞄相关的功能在内存层面有效地运作起来。在实现自瞄功能的情境下,只需要以游戏准星为中心向外的正方形区域图像就够了,没必要进行全屏截取。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1097

备战2025数学建模国赛(算法46):多目标优化

本篇博客将深入浅出地介绍多目标优化的核心概念、主流算法,并重点结合一个数学建模竞赛的经典案例,提供完整的Python代码实现,助你在未来的竞赛中游刃有余。它通过寻找帕累托最优解集,完美地诠释了“鱼与熊掌不可兼得”的权衡思想,为最终决策提供科学依据。这些问题都包含多个相互冲突的目标,传统的单目标优化方法(如梯度下降、单纯形法)对此无能为力,因为它们无法同时优化多个目标。在数学建模竞赛中,我们面临的绝大多数问题都不是单一的“最好”,而是充满权衡与妥协的“最优”。记住,成功的建模不仅在于解出问题,更在于清晰地。

YOLO 285

Java工厂模式详解

工厂模式: 设计模式是源于生活,人类社会生产从原始的集体生产、私有化、作坊、手工工厂、流水线工程一路发展过来,工厂生产模式成为效率最高的方式。 那么在软件设计中也参考了这种方式: 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就...

chengqiaochong3699的博客 1341

【WRFDA实操第一期】服务器中安装 WRFPLUS 和 WRFDA

【WRFDA实操第一期】安装 WRFPLUS 和 WRFDA

WW、forever的博客 2037

创新工厂的面试题

最近看到一个创新工厂的面试题,很有意思,下面给出算法实现(Java代码)。如果哪位有更好的算法,请跟贴。        abcde五人打渔,打完睡觉,a先醒来,扔掉1条鱼,把剩下的分成5分,拿一份走了;b再醒来,也扔掉1条,把剩下的分成5份,拿一份走了;然后cde都按上面的方法取鱼。问他们一共打了多少条鱼,写程序和算法 共打了多少条鱼的结果有很多。但求最少打的鱼的结

我是程序员 1032

YOLOv11 改进入门篇 | 从原理到代码:CBAM 注意力模块的插入与涨点验证

本文介绍了如何在YOLOv11模型中插入CBAM注意力模块以提升检测性能。CBAM包含通道和空间注意力两个子模块,通过双池化操作和MLP学习特征权重。文章详细解析了CBAM原理,提供了PyTorch实现代码,并建议在YOLOv11的Stage-3和Stage-4之间插入CBAM。实验表明,该方法在COCO数据集上使nano和small模型的mAP提升1.7-2.3个百分点,参数量仅增加0.27%,推理延迟增加0.1ms。最后给出了插入位置选择、通道缩减比等调优建议,验证了CBAM作为轻量级注意力模块的有效性

shrgegrb的博客 1301

ROCm rocr-libhsakmt分析系列1-2:多GPU跨卡VRAM访问机制分析

本文基于ROCr-Runtime的libhsakmt库源码,深入分析了多GPU系统中跨设备内存访问的实现机制。主要内容包括: 实现流程概述:通过P2P拓扑发现、统一虚拟地址空间、页表映射和硬件转发四个步骤,实现零拷贝的跨GPU内存访问。

图形/计算GPU的驱动与虚拟化技术分享园地 2508

2024年Java最全硬核解读工厂模式,结合实际源码架构把工厂模式玩出花儿来!(1),最新java面试题及答案

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。Set

2301_82241647的博客 913

【微信小程序】微信小程序开发环境搭建:安装微信小程序开发者工具

通过本文的介绍,你应该已经成功安装并配置了微信小程序开发者工具,为微信小程序开发做好了准备。接下来,你可以开始编写你的第一个小程序项目,探索更多有趣的功能和特性。祝你开发顺利,创造更多优秀的作品!

墨夶的博客 2952

@工厂模式详解及在项目中的使用

它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的的客户。这个策略模式的定义是不是有点抽象呢?通俗易懂的比喻:假设你跟不同性格类型的小姐姐约会,要用不同的策略,有的请电影比较好,有的则去吃小吃效果不错,有的去逛街买买买最合适。

weixin_49329785的博客 1317

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

面试题工厂模式(简单工厂、工厂方法、抽象工厂)写法与区别

面试题设计模式工厂模式 提到工厂模式大多数码农都不陌生毕竟这中设计模式我们比较常见许多开源框架中也经常出现因此面试得时候一般也会问问。 工厂模式为三种: 1、简单工厂 2、工厂方法 3、抽象工厂 工厂方法、抽象工厂方法区别 ...

aiailingfei的博客 1765

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java 面试题 —— 简单工厂、工厂方法、抽象工厂的区别

Java 面试题 —— 简单工厂、工厂方法、抽象工厂的区别 1、简单工厂模式 2、工厂(方法)模式 3、抽象工厂模式 4、区别

weixin_51123079的博客 968

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java三种工厂模式:简单工厂、工厂方法、抽象工厂

java设计模式,工厂模式、简单工程、工厂方法、抽象工厂

xiaoddt的博客 1万+

2021-05-18 C#.NET面试题 工厂模式,简单工厂模式,抽象工厂模式三者有什么区别

工厂模式,简单工厂模式,抽象工厂模式三者有什么区别 工厂模式,也叫做说虚构造器,在简单工厂中间插入了一个具体产品工厂,这个工厂知道产品构造时候的具体细节,而简单工厂模式的产品具体构造细节是在一个个if/else分支,或者在switch/case分支里面的。工厂模式的好处就在于将工厂和产品之间的耦合降低,将具体产品的构造过程放在了具体工厂类里面。在以后扩展产品的时候方便很多,只需要添加一个工厂类,一个产品类,就能方便的添加产品,而不需要修改原有的代码。而在简单工厂中,如果要增加一个产品,则需要修改工厂类,增加

微软MVP Eleven 7万+

面试题:说说工厂模式和单例模式吧

工厂模式 1、什么是工厂模式? 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程(new 关键字和具体的构造器)隐藏起来。用一个工厂方法来替代,对外提供的只是一个工厂方法,达到提高灵活性的目的。 2、有什么作用 1.隐藏了new关键字和构造器 2.降低了这个对象与别的类之间的耦合度,提高了程序的可扩展性。 原因:当子类被别的类替代,或者构造器的参数发生变化的时候,只需改动工厂方法内的new即可,改动量降到了最低,直接用new关键字的话,需要改动的地方就很多了 ,图示如下 3.把对象的设

CSY的博客 1324

详解单例模式和工厂模式(面试)

1. 什么是设计模式 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路,他不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳定性以及安全性的解决方案。 1995年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了23种设计模式,从此树立了软件设计模式领域的里程碑,人称[GoF设计模式]。 2. 学习设计模式的意义 设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继

qq_35254085的博客 1872

Android设计模式系列--工厂方法模式,android面试题2024高级

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。因为这种情况下,我们往往需要的是马上生产子类,getConnection方法往往是静态的,所以简单工厂,也叫静态工厂方法。真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。//同理,我们可以创建另外类似的工厂,生产某种专门的线程,非常容易扩展。阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

weixin_58085973的博客 545
上一篇: How to disable optimization when building WRK for easily debug?
smartgotodo
博客等级 码龄20年 61粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值