栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

关于力扣题目《灯泡开关》的解题过程及其思路

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于力扣题目《灯泡开关》的解题过程及其思路

       题目如下:

初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。

第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮,你只需要切换最后一个灯泡的开关。

找出并返回 n 轮后有多少个亮着的灯泡。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/bulb-switcher
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

        首先,先提供暴力解法的代码,笔者在看到题目的时候,第一想法是使用暴力解法来解出答案。但是当提交代码时候,出现了3个示例无法通过的情况,就明白这道题并不是用暴力解法来解决,就打印了0-36的情况来看看有没有规律

#include 
void func(int n);
int main()
{
	int i;
	for(i = 0;i<=36;++i)
	{
		func(i);
	}
	
}

void func(int n)
{
	int i,j,k;
	int sumb=0;
	int* g = (int *)malloc(sizeof(int) * n);
	for (i = 0; i < n; ++i) { 
		g[i] = 0;
     } 
	for(i=2;i<=n;i++)
	{
		for(j = 1;j*i<=n;j++)
		{
				g[j*i-1] = !g[j*i-1];	
		}
	}
	
	for(k=0;k 

编译结果如下 

 

发现其中还是存在一些规律关系

 3个1,5个2,7个3……

所以说我们可以很快的获得更快的解题思路,由于过于简单,笔者就不放出解题代码了。

以上为笔者解题思路,笔者水平较低,以上仅仅为个人愚见,如有错误,恳请指出。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/511760.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号