Ⅰ google中國編程賽的倆題 NO1!請高手做!
為了方便大家編程,我翻譯了一下,E文不夠好,自己想了之後翻譯的,但是基本意決對夠正確。剛掉線了,到現在才發上來。
問題描述
現在給你一個字元串數組cityMap來表示一個城市的布局。這個城市由多個街區組成。字元串數組cityMap的第一個元素表示這些街區的第一行,等等。用字元'B'表示巴士站的位置。使用字元'X'表示你的位置。剩下的用字元'.'表示。
給你一個整型變數walkingDistance,用來表示你走到巴士站的最大距離。距離由豎直的街區數加上水平的街區數計算得到。返回在你當前位置的walkingDistance范圍內巴士站的個數。
定義下列結構:
類 BusStops
它的方法有
countStops
參數
String[], int
返回值
int
使用方法
int countStops(String[] cityMap, int walkingDistance)
(保證這個方法是公共的Public)
規定
-
字元串數組cityMap的元素個數在1-50以內(包括1,50)
-
cityMap的每個元素要有1-50個字元(包括1,50)
-
cityMap的每個數組元素的字元個數要相同
-
每個元素的字元集為{'B', 'X', '.'}(就是隻字元只能是'B', 'X', '.')
-
數組cityMap中,一共只能有一個'X'
-
walkingDistance 取值為1-100,包括1, 100
例1)
cityMap =
{". . . B .",
". . . . .",
". . X . B",
". . . . .",
"B . . . ."}
walkingDistance = 3
那麼返回的值就是2,即,
你能到達在你上方(不是你的頭頂)的那個巴士站(3步遠),或者到你右邊的那個(2步遠)。在你的左下方的那個站有4步遠,大於3步。
例2)
cityMap =
{"B . B . .",
". . . . .",
"B . . . .",
". . . . .",
". . . . X"}
walkingDistance = 8
返回值為3,也就是說
8步可以走遍這個地圖,所以我們能到達全部的3個巴士站。
例3)
cityMap =
{"B B B B B",
"B B . B B",
"B . X . B",
"B B . B B",
"B B B B B"}
walkingDistance = 1
返回值為0,
很多巴士站,不過很可惜,一個也去不了。
例4)
cityMap =
{"B . . B . .",
". B . . . B",
". . B . . .",
". . B . X .",
"B . B . B .",
". B . B . B"}
walkingDistance = 3
共能到達7個站。
程序說明所有權和解釋權歸TopCoder公司。任何未經授權、沒有得到TopCoder公司的簽署的授權文件而使用或者更改此信息的行為,都將受到起訴。&;2003, TopCoder, Inc. All rights reserved.
斷網一天多了,到現在才能上!No.1做出來了,不過是C++版的,原題目可能是讓用Java的吧。不管怎麼樣,做出來了:
#include <iostream>
#include <cstring>
using namespace std;
int indexOf(string str, char chr)
{
for(int i =0; str[i]; i++)
{
if(str[i] == chr) return i;
}
return -1;
}
int getStringLen(string str)
{
int i;
for(i = 0; str[i]; i++);
return i;
}
int getArrayLen(string cM[])
{
int i = 0;
for(i = 0; cM[i] != ""; i++);
return i;
}
void printMap(string cM[])
{
int gI = getArrayLen(cM), i;
int gJ = getStringLen(cM[0]), j;
for(i = 0; i < gI; i++)
{
for(j = 0; j < gJ; j++)
{
cout << cM[i][j] << " ";
}
cout << endl;
}
}
int getLocationX(string cM[])
{
int gI = getArrayLen(cM), i;
for(i = 0; i < gI; i++)
{
if(indexOf(cM[i], 'X') >= 0) return i;
}
return -1;
}
int getLocationY(string cM[])
{
int gI = getArrayLen(cM), i;
for(i = 0; i < gI; i++)
{
if(indexOf(cM[i], 'X') >= 0)
{
return indexOf(cM[i], 'X');
}
}
return -1;
}
class BusStops
{
public:
int countStops(string[], int);
};
int BusStops::countStops(string cM[], int wD)
{
int gI = getArrayLen(cM);
int gJ = getStringLen(cM[0]);
int iL = getLocationX(cM);
int jL = getLocationY(cM);
int retValue = 0, i, j, t;
for(i = 0; i < gI; i++)
{
for(j = 0; j < gJ; j++)
{
t = 0;
if(cM[i][j] == 'B')
{
t += abs(i - iL) + abs(j - jL);
if(t <= wD) retValue++;
}
}
}
return retValue;
}
int main(int argc, char *argv[])
{
BusStops BS;
string cityMap[] =
{".......B",
".B.B....",
".B.B....",
"..XBB...",
".B.B....",
".B.B....",
"...BBBBB",
"......B."};
int walkingDistance = 3;
printMap(cityMap);
cout << "\nwalkingDistance = "; cin >> walkingDistance;
cout << "Number of Bus Stops: ";
cout << BS.countStops(cityMap, walkingDistance) << endl;
system("Pause");
return 0;
}
運行結果
. . . . . . . B
. B . B . . . .
. B . B . . . .
. . X B B . . .
. B . B . . . .
. B . B . . . .
. . . B B B B B
. . . . . . B .
walkingDistance = 3
Number of Bus Stops: 10
Press any key to continue...
Ⅱ 今年的Google編程挑戰賽是不是沒有參加中國區總決賽的機會了直接到全球
先把前面幾輪預賽過了吧,到時候如果排名靠前該有的自然會有的。
ps。 前500我是沒什麼希望了。。呵呵
Ⅲ google計算機全球編程大賽2011年還能參加嗎,如何參加有什麼要求嗎
伙計現在是年底了。。所以肯能不能吧。。
Ⅳ 請問國內外比較著名的編程大賽有哪些,詳細介紹一下。
ACM國際編程大賽 目前比較權威和知名度比較高的大學生程序設計競賽,其目的旨在使大學生運用計算機來充分展示自己分析問題和解決問題的能力。從1970舉辦至今ACM-ICPC 已經在亞洲的多個國家有分賽區,成為很多高校所關注的重要賽事。
ACM-ICPC是由國際計算機界歷史悠久、頗具權威性的組織ACM(Association for Computing Machinery,國際計算機協會)主辦的,世界上公認的規模最大、水平最高的國際大學生程序設計競賽,其目的旨在使大學生運用計算機來充分展示自己分析問題和解決問題的能力。該項競賽從1970年舉辦至今已歷31屆,被稱為大學生的計算機奧林匹克競賽,一直受到國際各知名大學的重視,並受到全世界各著名計算機公司的高度關注,在過去十幾年中,APPLE、AT&T、MICROSOFT和IBM等世界著名信息企業分別擔任了競賽的贊助商。可以說,ACM國際大學生程序設計競賽已成為世界各國大學生最具影響力的國際級計算機類的賽事,是廣大愛好計算機編程的大學生展示才華的舞台,是著名大學計算機教育成果的直接體現,是信息企業與世界頂尖計算機人才對話的最好機會。 1997年以來,在IBM的獨家贊助支持下,大賽規模達到了原來的700%。2006年的賽事有來自84個國家的1700多所高校的5600多支隊伍參加。 該項競賽分區域預賽和國際決賽兩個階段進行,各預賽區前幾名自動獲得參加世界決賽的資格,世界決賽安排在每年的春季學期舉行,而區域預賽安排在上一年的秋季學期在各大洲舉行。 中國內地從1996年開始參加ACM-ICPC亞洲區預賽,至今已歷十屆。2005年第30屆ACM國際大學生程序設計競賽亞洲區預選賽,中國設有北京賽區、杭州賽區和成都賽區,分別由北京大學、浙江大學和四川大學承辦。 其中,由四川大學承辦的預選賽組織了來自49所高校的69支隊伍參加;由北京大學承辦的預選賽組織了來自105所高校的702支隊伍參加;浙江大學承辦的預選賽組織了來自132所高校的1050支隊伍參加,其規模相當盛大。 2006年北京賽區、上海賽區、西安賽區,參賽學校也是超過百所,隊伍過千。北京賽區最先開始,經過網路預賽選拔淘汰,第31屆 ACM-ICPC 亞洲區預選賽北京賽區暨Google杯全國大學生程序設計邀請賽現場決賽共有來自全國40多所高校的68支隊伍參賽。按現場比賽名次,比賽設置一等獎10支隊(金牌),二等獎15支隊(銀牌),三等獎20支隊(銅牌),其他參賽隊頒發優勝獎證書。 ACM-ICPC的亞洲預選賽中國大陸各賽區,也已成為國內計算機專業學科參與范圍最廣、影響最大的競賽活動。參加ACM-ICPC競賽的參賽選手均是大學中的計算機頂尖人才,各所高校的教師以及參賽選手之間的交流將使其成為展示中國大學生計算機才華的良好機會和參賽的國內外學校加強合作、增進友誼的橋梁。ACM-ICPC競賽在中國的繼續展開,也必將為中國計算機教育事業的發展作出更大貢獻。
Ⅳ google編程挑戰賽是什麼請詳細介紹一下吧 關於怎樣參加,舉辦日期等等
2006-8-17 8:56:55Google全球編程挑戰賽揭幕,中國選手有望赴美比賽 下面是Google的公關小姐發來的新聞稿件-「Google全球編程挑戰賽揭幕,中國選手有望赴美比賽」。如果你對於編程感興趣,可以去試一試自己的身手。
Google全球編程挑戰賽揭幕,中國選手有望赴美比賽
中國北京,2006 年8月15日,Google(谷歌)公司今天宣布被譽為編程比賽的「諾貝爾獎」的2006 Google編程大賽從今天開始報名。這項一年一度的在線編程大賽要求參賽者運用自身掌握的編程技術和創新能力來解決一系列編程難題。本次比賽從本月15日開始接受網上報名,總決賽將於10月28日在位於美國紐約Google(谷歌)公司工程部進行,進入前100名的選手都有機會赴美參加比賽,Google(谷歌)公司將負擔所有選手的費用。
Google(谷歌)公司副總裁兼大中華區聯合總裁李開復先生表示:「Google(谷歌)編程大賽為全世界最優秀的計算機專家提供了一次絕好的國際化的」同台競技「的機會。Google(谷歌)公司很高興能為這些優秀的編程人員解決世上最具挑戰性的編程問題提供支持,同時,我們很高興能藉此機會讓他們了解Google分布在全球的研發中心。」
李開復同時表示,今年初的Google(谷歌)編程挑戰賽中國區比賽中,國內選手就已經展現出了令人欽佩的卓越才華,大約有13,500選手報名參加,中國蘊藏著大量非常優秀的編程人員,他們所展現出的技術能力絲毫不遜於任何其他國家,而且在某些技術方面則顯得更為突出。今年的比賽是真正的全球性比賽,中國選手有機會在一個全球化,高挑戰的「PK」環境中全面展現中國編程選手實力。
「無論中國選手取得多麼好的成績,我都不會吃驚,因為他們有這個實力。」李開復表示。
Google(谷歌)編程挑戰賽是全球編程領域公認的重要比賽,至今已舉辦了四屆。去年有全球32個國家的超過14500名選手參加了這一比賽,來自波蘭的選手Marek Cygan獲得了冠軍。中國選手有403人參加,7人進入決賽(前100),1人進入前十名,取得很好的成績。
申請參加Google編程挑戰賽的截止日期是9月6日,同時資格賽也將在同一天揭幕。想與世界上最優秀的程序員一絕高下嗎?現在起通過www.google.com/codejam2006報名參加比賽吧。
原創文章如轉載,請註明:轉載自月光博客 [ http://www.williamlong.info/ ]
Ⅵ 有什麼比較有實力的編程大賽(C語言)
ACM程序設計大賽簡介:
ACM國際大學生程序設計競賽(ACM International Collegiate Programming Contest – ACM-ICPC)由國際計算機學界著名的ACM學會(Association for Computer Machinery)主辦,是世界上規模最大、水平最高的國際大學生程序競賽。每年舉辦一次。ACM成立於計算機誕生次年,是目前計算機學界中歷史最悠久、最具權威性的組織。
ACM國際性大學生程序設計競賽自1970年開始,其宗旨是使大學生能通過計算機充分展示自己分析問題和解決問題的能力。參加本項比賽的選手至少需要掌握計算機科學的常用演算法,基本的計算理論,(如:離散數學,具體數學,組合數學基礎),數據結構基礎,程序設計語言(規定是C/C++或者是Java)。在本項比賽中考察學生的不僅僅是能夠完成指定任務的程序,更要求在完成程序的功能的基礎之上提高程序的運行效率與空間佔用率。在浙江大學ACM在線測試組參加測試的最深體會就是你時時刻刻都應當去考慮如何去最大限度的優化,改善你的程序結
青花信守承諾(14:54:00):
構
,已達到用最小的空間,最優的演算法實現程序的功能。從數學角度考慮,題目主要的方向集中在工程數學,抽象數學很少涉及。一般題目都會給出要求和幾組輸入和輸出作為程序設計的參考,也是檢驗程序正確性的標准之一。賽涵蓋的范圍很廣,大致劃分如下:Direct(簡單題),Computational Geometry(計算幾何),Number Theory(數論),Combinatorics(組合數學),Search Techniques(搜索技術),Dynamic Programming(動態規劃),Graph Theory(圖論),Other(其他)。
Ⅶ 編程大賽有哪些
總結了7個編程大賽,希望能夠幫助到你:
1、TopCoder
TopCoder是一家被上百萬程序員喜愛的編程比賽網站。包括演算法競賽、組建設計競賽、組建開發競賽等。其演算法競賽在全球與ACM、Google Code Jam並稱為三大賽事。
2、Codeforces
雖然介紹到了,但提醒一句,Codeforces不是給凡人准備的。這個是神仙使用的編程比賽網站,大家知道下就好。
3、CodeMonk
CodeMonk是HackerEarth推出的系列挑戰賽事,讓程序員們全身心沉浸在自己編寫的代碼中,真正地專注於問題的解決,並獲得自身突破。
4、Project Euler
歐拉計劃也是全球人氣最高的編程挑戰項目之一,深受上百萬程序員喜愛。但是和Codeforces不同,這些挑戰並不是高不可攀到神仙才能解答,而是非常實用的,調動大家思考與解決問題的。
5、Facebook Hacker Cup
這是由Facebook舉辦的國際性編程大賽。參賽者需要在一段時間內解決一組演算法題,可以使用任何編程語言來解決問題。
6、ACM 國際大學生程序設計競賽
ACM是由美國計算機協會主辦,現在已經是全球最具影響力的大學生編程比賽。該比賽會綜合測試參賽者創新、團隊能力以及高壓編程、分析能力等。
7、Google Code Jam
Google Code Jam是一項由Google主辦的國際程序設計競賽。該項賽事始於2003年,旨在幫助Google發掘潛在的工程領域頂級人才。比賽內容包括一系列的演算法問題,參賽者必須在指定時間內解決。參賽者允許使用任意自選編程語言和開發環境來解答問題。
想要學習編程知識,推薦來北京尚學堂
Ⅷ google中國編程賽的倆題 NO2!請高手做!
為了方便大家編程,我翻譯了一下,E文不夠好,自己想了之後翻譯的,但是基本意決對夠正確。剛掉線了,到現在才發上來。
程序說明
給你一個變數(String)grid表示一個字母矩陣。另外加一個變數,string類型,find,代表你要在字母矩陣中找到的字母。開始的點可以是矩陣中的任一地方。路線可以是向上,向下,向左,向右,或者對角線方向上,從而到下一個字母去。可以多次重復路徑,但是不能在一行內經過同一個格子兩次(見例六的詳細說明)[也就是不能從自己到自己]
你要返加一個整型變數,用來表示在格子內能找到所要求字母的路徑的個數。如果結果大於1,000,000,000就返回-1。
定義:
一個類 WordPath
其方法有
countPaths
參數
vector <string>, string
返回值
int
使用說明
int countPaths(vector <string> grid, string find)
(確保這個方法是公共的Public)
規定(要求)
-
grid數組要有1-50個元素,包括1,50
-
數組的每個元素是一個由1-50個大寫字母組成的字元串。
-
元素與元素間,字元串的長度要相等。(以構成一個矩陣)
-
find變數是一個由1-50個大寫字母組成的字元串。(包括1,50)
例1)
grid =
{"ABC",
"FED",
"GHI"}
find = "ABCDEFGHI"
返回1
只有一條路徑,每個字母都走了一遍。
例2)
grid =
{"ABC",
"FED",
"GAI"}
find = "ABCDEA"
答案是2
一旦我們走到了字母E,我們可以有兩個方向到達字母A。
例3)
grid =
{"ABC",
"DEF",
"GHI"}
find = "ABCD"
當然是返回0
我們可以找到ABC的路徑,但是,卻不能一下子從C跳到D。
例4)
grid =
{"AA",
"AA"}
find = "AAAA"
路徑數 108
四個方向中,我們可以從任何一個方向開始。從每個位置,我們都可以選擇三個可行的方向中的一個到達第2個字母,同樣的一直到第4個字母。所以 4 * 3 * 3 * 3 = 108
例5)
grid =
{"ABABA",
"BABAB",
"ABABA",
"BABAB",
"ABABA"}
find = "ABABABBA"
返回值:56448
太多了路徑可以選擇啊。
例6)
grid =
{"AAAAA",
"AAAAA",
"AAAAA",
"AAAAA",
"AAAAA"}
find = "AAAAAAAAAAA"
路徑數:-1
超過了1,000,000,000條路徑,所以,按規定,返回-1。
例7)
grid =
{"AB",
"CD"}
find = "AA"
返回0
我們不能停在同一個格子上,所以,沒有路徑可以選擇。
程序說明所有權和解釋權歸TopCoder公司。任何未經授權、沒有得到TopCoder公司的簽署的授權文件而使用或者更改此信息的行為,都將受到起訴。&;2003, TopCoder, Inc. All rights reserved.
Ⅸ 到底誰是google中國編程挑戰賽第一名
先前面幾輪預賽吧候排名靠前該自 ps 前500我沒希望呵呵
Ⅹ 面向社會的編程大賽有哪些,有些大賽都是大
大學生程序設計競賽有哪些?
希望了解一些中國目前有哪些程序設計競賽在舉辦,包括校的,市的,省的……我是一名大一新生,希望多參加一下這方面的競賽,謝謝大家。ACM我知道的,有沒有一些小型的
演算法:
1、topcoder。
2、網路之行。
3、google jam。
4、robocup,ai-tank。
小貼士:
還有一些軟體設計的比賽,主要不看演算法。