在今年的 Google Code Jam 中,我无法解决排位赛的一个问题。这个(底部的完整代码)是我想出的解决公平和正方形问题的方法。并且,它被判定为不正确,两次。
而且,它令人痛苦地士气低落。我打算在下一次 Google Code Jam 中改变这种情况。我知道一个人必须练习(很多!)才能成为更好的程序员,成为专家需要数年时间。我相信我已经准备好付出那么多努力。但是,一个人很容易被要掌握的东西列表的大小所淹没。所以,我的问题是,是否可以设计一条学习路径,以便人们能够识别和掌握在 Google Code Jam 或类似项目中表现更好所需的技能在线比赛?如果是,那会是什么?
这条路径应该允许一个人先掌握更简单的技术,然后再转向更难的技术,好像难度级别逐渐增加一样。
这是我对公平和正方形问题的(错误)解决方案
#include<stdio.h>
#include<math.h>
int sqrRoot(double numberToCheck);
int isPalindrome(int numToCheck);
int main(void)
{
int i=0,j=0,cases=1,steps=0,low=0,high=0,isSquare=0,count=0,bit=0;
scanf("%d", &steps);
while (cases<=steps)
{
scanf(" %d %d", &low, &high );
for (j=low;j<=high;j++)
{
isSquare = sqrRoot(j);
if (isSquare == 1)
{
bit = isPalindrome(j);
if (bit==1)
{
count ++;
//printf("\n wowowo# %d", j);
}
}
}
printf("Case #%d: %d \n", cases,count);
count = 0;
bit = 0;
cases++;
}
return 0;
}
int sqrRoot(double numberToCheck)
{
double result = sqrt(numberToCheck);
int y=0;
y = result;
if (result == y)
{
return 1;
}
else
{
return 0;
}
}
int isPalindrome(int numToCheck)
{
int n=0,rev=0;
double dig=0.0;
n = numToCheck;
while(numToCheck>0)
{
dig = numToCheck % 10;
rev = rev * 10 + dig;
numToCheck = numToCheck / 10;
}
if (n==rev)
{
return 1;
}
return 0;
}