在短一次 但是這次是錯的!!! 有空在review! 前進第四題!!!
#include "stdafx.h"
void main()
{
int C[2][3] = {{1, 2, 2}, {0, 0, 1}};
int l,n,s,p,i,j,t,x;
scanf("%d", &l);
for(i=0;i<l;i++)
{
int c=0;
scanf("%d %d %d", &n, &s, &p);
for(j=0;j<n;j++)
{
scanf("%d", &t);
int r = C[(x = p-t/3)-1][t-t/3*3];
c += (x <= 0 || r%2 && s-->0 || r/2) && t && x <= 2;
}
printf("Case #%d: %d\n", i+1,c);
}
}
From: Kradark [mailto:kradark@gmail.com]
Sent: Tuesday, April 17, 2012 11:46 AM
To:
Subject: [光通訊時代] Google Code Jam 2012 資格賽 第二題 Problem B. Dancing With the Googlers 重構跟短碼之後,可讀性?
重構跟短碼之後,可讀性?
#include "stdafx.h"
void main()
{
int table[2][3] = { {1, 2, 2}, {0, 0, 1} };
int line,n,s,p,i,j,t,x;
scanf("%d", &line);
for(i=0;i<line;i++)
{
int count=0;
scanf("%d %d %d", &n, &s, &p);
for(j=0;j<n;j++)
{
scanf("%d", &t);
if(!(t || p)) count++;
if(!t) continue;
if( (x = p-t/3) > 2 ) continue;
if( x <= 0 ) { count++; continue; }
if( table[x-1][t-t/3*3] ==1 ) { count += s-->0; continue; }
if( table[x-1][t-t/3*3] ==2 ) count ++;
}
printf("Case #%d: %d\n", i+1,count);
}
}
From:
Smail Set 一次 10分。
Large Set 一次 15分。
花費時間: 1hr 15min
http://code.google.com/codejam/contest/1460488/dashboard#s=p1&a=1
題目分析:
這一題在考題目理解能力,有人說數學的符號很重要,沒萊布尼茲發明微積分符號,
就沒有後來蓬勃的發展,那解程式符號與圖型也很重要,不然題目落落長,看了三遍也不懂。
看似很複雜,其實整體只有六種一般狀況加上一種例外。
六種一般狀況用表格表式,因為狀況單純所以用查表的,
就是table的第一與第二個column。
From:
// DancingWithGooglers.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
void main()
{
// 0=>x, 1=>sprz, 2=>count++
int table[3][4] =
{
{0, 1, 0, 0},
{0, 2, 0, 0},
{0, 2, 1, 0}
};
int line,n,s,p,i,j,t,m,q,r,x;
int count;
scanf("%d", &line);
for(i=0;i<line;i++)
{
count=0;
scanf("%d %d %d", &n, &s, &p);
for(j=0;j<n;j++)
{
scanf("%d", &t);
if(t==0) //例外
{
if(p==0) count++;
continue;
}
m=t/3;
x = p-m;
if( x > 2 ) continue;
q = t-m*3;
//printf("n,s,p,t,m=t/3,x=p-m,q,table[q][x]=%d,%d,%d,%d,%d,%d,%d,%d\n",n,s,p,t,m,x,q,table[q][x]);
if(x>0)
{
r = table[q][x];
if(r==1) { //sprz
if(s>0) {
count ++;
s--;
}
}
if(r==2)
{
count ++;
//count += !(table[q][x]==0);
}
}else{
count++;
}
}
printf("Case #%d: %d\n", i+1,count);
}
}
--
由 Kradark 於 4/17/2012 11:45:00 上午 張貼在 光通訊時代