四道智力题,挑战你的编程极限!

KimoGao 2012-02-28 01:30:29
因为好多朋友已经在博客里粘贴代码了,所以直接给个链接好了。

不过希望大家点击前能留个脚印,来的都有分哦~

http://blog.csdn.net/keymo_/article/details/7298963
...全文
321 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
YapingXin 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 tianxia_taiping 的回复:]

引用 8 楼 arcan 的回复:

第一题
private int GetRestnumber(int count)
{
return Convert.ToInt32( Math.Pow(2, Convert.ToInt32( Math.Log( count,2))));
}


代码是简洁了,但有问题:一是不方便别人阅读,二是你把繁琐的事情留给cpu,不好,pow和log是……
[/Quote]

那么我21楼的答案应该符合你的要求吧。
YapingXin 2012-03-05
  • 打赏
  • 举报
回复
第一题:


public int Run()
{
int start = 1;
int k = 50 >> 1;
while (start <= k)
{
start <<= 1;
}

return start;
}
YapingXin 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 arcan 的回复:]

还得修改一下:
C# code

static void GetRestnumber(int count)
{
int i = 1;
for (i = 1; (i << 1) <= count; )
{
i =i << 1;
}
Console.WriteLine(i);
Console.Read();
}
[/Quote]


你为什么要把这种用户输入输出的语句夹杂在你的这个函数里?

多么不professional的做法。
g4_magicvr 2012-03-05
  • 打赏
  • 举报
回复
最少的代码……好吧 我很邪恶 给出一个思路好了

例如第一题:

public int sb()
{
return 32;
}

这不就是最简单的代码了么
zmkkobe 2012-03-04
  • 打赏
  • 举报
回复
不错的题目。
Arcan 2012-03-01
  • 打赏
  • 举报
回复
还得修改一下:

static void GetRestnumber(int count)
{
int i = 1;
for (i = 1; (i << 1) <= count; )
{
i =i << 1;
}
Console.WriteLine(i);
Console.Read();
}
Arcan 2012-03-01
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 tianxia_taiping 的回复:]

代码是简洁了,但有问题:一是不方便别人阅读,二是你把繁琐的事情留给cpu,不好,pow和log是……
[/Quote]

主要是图省事,而且就执行一次,虽然相对普通运算比较耗费CPU时间,但也不至于太严重,毕竟不是在循环中频繁的使用。

写一个位运算的:

static void GetRestnumber(int count)
{
int i = 1;
for (i = 1; (i << 1) < count; )
{
i =i << 1;
}
Console.WriteLine(i);
Console.Read();
}
天下太平 2012-03-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 arcan 的回复:]

第一题
private int GetRestnumber(int count)
{
return Convert.ToInt32( Math.Pow(2, Convert.ToInt32( Math.Log( count,2))));
}
[/Quote]

代码是简洁了,但有问题:一是不方便别人阅读,二是你把繁琐的事情留给cpu,不好,pow和log是很耗费时间的,借用+—运算是较好的,用位运算更快!
zhouxingyu896 2012-02-29
  • 打赏
  • 举报
回复
学习
帮顶
Arcan 2012-02-29
  • 打赏
  • 举报
回复
上面的是第三题的解答。
Arcan 2012-02-29
  • 打赏
  • 举报
回复

private static void nine()
{
int[] q = new int[9];// { 40320, 5040, 720, 120, 24, 6, 2, 1, 1 };
int allcount = 1;
for (int i = 1; i <= 9; i++)
{
q[9 - i] = allcount;
allcount = allcount * i;
}


for (int j = 0; j < allcount; j++)
{
int[] r = new int[9];
List<int> li = new List<int>();
for (int i = 0; i < 9; i++)
{
li.Add(i);
}
int y = j;
for (int i = 0; i < 9; i++)
{
int s = Convert.ToInt32(y / q[i]);
y = Convert.ToInt32(y % q[i]);
r[i] = li[s]+1;
li.RemoveAt(s);
}
List<int> jg = new List<int>();
for (int i = 0; i < 3; i++)
{
jg.Add(r[i * 3 + 0] + r[i * 3 + 1] + r[i * 3 + 2]);
jg.Add(r[0 + i] + r[3 + i] + r[6 + i]);
}
jg.Add(r[0] + r[4] + r[8]);
jg.Add(r[2] + r[4] + r[6]);

bool xd = true;
for (int i = 0; i < jg.Count-1; i++)
{
if (jg[i] != jg[i + 1])
{
xd = false;
break;
}
}
if (xd)
{
for (int i = 0; i < 3; i++)
{
Console.WriteLine(r[0+i*3].ToString() + "," + r[1+i*3].ToString() + "," + r[2+i*3].ToString());
}
Console.WriteLine("----");
}

}
Console.Read();
}
  • 打赏
  • 举报
回复
第三题 8 1 6
3 5 7
4 9 2
每条线都是15
  • 打赏
  • 举报
回复
第二题 30天 从周二开始 周三结束
Ny-6000 2012-02-29
  • 打赏
  • 举报
回复
Arcan 2012-02-29
  • 打赏
  • 举报
回复
第一题
private int GetRestnumber(int count)
{
return Convert.ToInt32( Math.Pow(2, Convert.ToInt32( Math.Log( count,2))));
}
Arcan 2012-02-29
  • 打赏
  • 举报
回复
第二题:

static void riqi()
{
for (int d = 28; d < 32; d++)
{
for (int startday = 0; startday < 7; startday++)
{
int y = d - 28;
int MonCount = 4;
int TueCount = 4;
int WedCount = 4;
int ThuCount = 4;
if ((startday+ y>1)&&(startday<=1)) MonCount++;
if ((startday + y > 2) && (startday <= 2)) TueCount++;
if ((startday + y > 3) && (startday <= 3)) WedCount++;
if ((startday + y > 4) && (startday <= 4)) ThuCount++;

if ((MonCount + 1 == TueCount) && (WedCount == ThuCount + 1))
{
Console.WriteLine("Sun Mon Tue Wed Thu Fri Sat");
for(int i=0;i<startday ;i++)
Console.Write(" _ ");
for (int i = 1; i <= d; i++)
{
Console.Write(i.ToString("D2")+" ");
if ((i+startday) % 7 == 0)
{
Console.WriteLine();
}

}

}
}
}
Console.Read();
}
  • 打赏
  • 举报
回复
我就不说我不会
youzelin 2012-02-28
  • 打赏
  • 举报
回复
第一题:

private static int GetSurviver(int count)
{
string s = Convert.ToString(count, 2);
return (int)Math.Pow(2, s == "0" ? -1 : s.Length - 1);
}
q107770540 2012-02-28
  • 打赏
  • 举报
回复

//精简一下,可以只剩下4行代码 :
void Main()
{
var list=Enumerable.Range(1,50).Select((x,y)=>new {x=x,index=y+1});
while(list.Count()>1)
list=list.Where(x=>x.index%2==0).Select((x,y)=>new {x=x.x,index=y+1}); Console.WriteLine(list.First().x); //32
}
  • 打赏
  • 举报
回复
加载更多回复(1)

7,774

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧