1. 程式人生 > >第六屆藍橋杯九數分組

第六屆藍橋杯九數分組


九陣列分數 1,2,3...9 這九個數字組成一個分數,其值恰好為1/3,如何組法?
#include <stdio.h>

void test(int x[])
{
	int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
	int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
	
	if(a*3==b) printf("%d / %d\n", a, b);
}

void f(int x[], int k)
{
	int i,t;
	if(k>=9){
		test(x);
		return;
	}
	
	for(i=k; i<9; i++){
		{t=x[k]; x[k]=x[i]; x[i]=t;}
		f(x,k+1);
		_____________________________________________ // 填空處
	}
}
	
int main()
{
	int x[] = {1,2,3,4,5,6,7,8,9};
	f(x,0);	
	return 0;
}
拿到這道題後,我首先的是分析程式的執行過程 在第一個函式的test中是對分子和分母是否滿足關係的驗證 在函式  f()中if判斷語句也是對函式的驗證    以及關注對於區域性變數的定義,我發現 i 是用作迴圈的實體,而 t 是在交換數中產生一箇中間變數,接著又是一個遞迴呼叫  f(x,k+1)。由於前期  k的值始終沒有大於等於9,所以不執行,而對於大於9的不滿足條件的直接return 出去,由於始終是遞迴呼叫,我們採用除錯,分別在引數改變的地方加入斷點,觀察當大於9之後,會開始減小,也就是退棧(資料結構中的棧),並且控制沒有滿足的數值輸出 數值再次減小但是之前每次在 t 交換的引數的變數並不屬於之前的變數的值,所以我們應該將之前的值再次恢復,即再次swap(x[i],x[k]),此時Debug發現控制檯由數值輸出,表示我們成功 答案 填空處填寫  t = x[i]; x[i] = x[k]; x[k] = t; 5832 / 17496
5823 / 17469 總結:
      首先對於我們知道其工作意圖的程式碼片段,拿到程式後我們首先分析每段程式碼的不同意義,以及所起的作用       再觀察定義的變數所起的範圍,在進棧和退棧時保證引數的不改變才能保證之後每一次的正常執行

相關推薦

藍橋分組

九陣列分數 1,2,3...9 這九個數字組成一個分數,其值恰好為1/3,如何組法? #include <stdio.h> void test(int x[]) { int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];

藍橋JavaA組題壘骰子

賭聖atm晚年迷戀上了壘骰子,就是把骰子一個壘在另一個上邊,不能歪歪扭扭,要壘成方柱體。 經過長期觀察,atm 發現了穩定骰子的奧祕:有些數字的面貼著會互相排斥! 我們先來規範一下骰子:1 的對面是 4,2 的對面是 5,3 的對面是 6。 假設有 m 組

算法筆記_208:藍橋軟件類決賽真題(Java語言A組)

boolean style 空格 ima eight jdk1 ++ port 但是 目錄 1 胡同門牌號 2 四階幻方 3 顯示二叉樹 4 穿越雷區 5 切開字符串 6 鋪瓷磚 前言:以下代碼僅供參考,若有錯誤歡迎指正哦~ 1 胡同門牌號 標題:胡

藍橋真題總結

for a* 截斷 如果 pan 文字 居中 size using 第一題:獎券數目 有些人很迷信數字,比如帶“4”的數字,認為和“死”諧音,就覺得不吉利。 雖然這些說法純屬無稽之談,但有時還要迎合大眾的需求。某抽

藍橋java b組三題

watermark alt args 暴力破解 out col HR sdn oid 第三題 三羊獻瑞 觀察下面的加法算式: 其中,相同的漢字代表相同的數字,不同的漢字代表不同的數字。 請你填寫“三羊獻瑞”所代表的4位數字(答案唯一),不要填寫任何多余內容。 答案這個題目

藍橋java b組第一題

都是 text nbsp post ppa hbm 藍橋杯 文字 fill 第一題 三角形面積 圖中的所有小方格面積都是1。 那麽,圖中的三角形面積應該是多少呢? 請填寫三角形的面積。不要填寫任何多余內容或說明性文字。 填空答案 28 沒什麽好說的 第一題很水 估計

藍橋java b組8題

CP stat exti 要求 得到 嚴格 else scan 內容 樂羊羊飲料廠正在舉辦一次促銷優惠活動。樂羊羊C型飲料,憑3個瓶蓋可以再換一瓶C型飲料,並且可以一直循環下去,但不允許賒賬。 請你計算一下,如果小明不浪費瓶蓋,盡量地參加活動,那麽,對於他初始買入的n瓶飲料

2015年藍橋C/C++程序設計本科B組決賽 ——居民集會(編程大題)

con 要求 數據 color 資源 例如 aps 計算 調試 標題:居民集會 藍橋村的居民都生活在一條公路的邊上,公路的長度為L,每戶家庭的 位置都用這戶家庭到公路的起點的距離來計算,第i戶家庭距起點的距 離為di。每年,藍橋村都要舉行一次集會。今年,由於村裏的人口太多,

加法變乘法——藍橋C語言B組(省賽)

clu 自己 nbsp 加法 藍橋杯 重新 () std spa 原創 加法變乘法 我們都知道:1+2+3+ ... + 49 = 1225現在要求你把其中兩個不相鄰的加號變成乘號,使得結果為2015 比如:1+2+3+...+10*11+12+...+27*28+29+

三羊獻瑞——藍橋C語言B組(省賽)三題

lan font oid 漢字 print ack size IV cnblogs 原創 三羊獻瑞 觀察下面的加法算式: 祥 瑞 生 輝 + 三 羊 獻 瑞 ------------------- 三 羊 生 瑞 氣 (如果有對齊問題,可以參看【圖1.jp

2015年藍橋JavaB組決賽題解——穿越雷區

標題:穿越雷區 X星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。 某坦克需要從A區到B區去(A,B區本身是安全區,沒有正能量或負能量特徵),怎樣走才能路徑最短? 已知的地圖是一個方陣,上面用字母標出了A,B區,其它區都標了正號或

藍橋題解

1、獎券數目 法一: #include<stdio.h> int main() { int ans=0; for(int i=1; i<=9; i++) for(int j=0; j<=9; j++)

2015藍橋國賽決賽c/c++本科B組試題總結及解題答案

1. 積分之迷 小明開了個網上商店,賣風鈴。共有3個品牌:A,B,C。 為了促銷,每件商品都會返固定的積分。 小明開業第一天收到了三筆訂單:  第一筆:3個A + 7個B + 1個C,共返積分:315  第二筆:4個A + 10個B + 1個C,共返積分:420 

藍橋C++B組 牌型種數

牌型種數小明被劫持到X賭城,被迫與其他3人玩牌。一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。這時,小明腦子裡突然冒出一個問題:如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?請填寫該整數,不要填寫任何多餘的內容或說明文字。

藍橋 軟體類省賽真題 七題:加法變乘法

加法變乘法 我們都知道:1+2+3+ ... + 49 = 1225 現在要求你把其中兩個不相鄰的加號變成乘號,使得結果為2015 比如: 1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015 就是符合要求的答案。 請你尋找另外一個可能

2015年藍橋C/C++程式設計本科B組省賽-星系炸彈(結果填空)

#include <iostream> using namespace std; int isYear(int year) { if(year%4==0&&year%100!=0||year%400==0)) return 1; else

2015年藍橋試題(C/C++本科B組)

1 有些人很迷信數字,比如帶“4”的數字,認為和“死”諧音,就覺得不吉利。雖然這些說法純屬無稽之談,但有時還要迎合大眾的需求。某抽獎活動的獎券號碼是5位數(10-99),要求其中不要出現帶“4”的號碼,主辦單位請你計算一下,如果任何兩張獎券不重號,最多可發出獎券多少張。 請

2014 藍橋校內賽解題報告 答案

僅僅留做以後回過頭來勉勵自己,轉載請註明出處。1. 輸入一個字串,求它包含多少個單詞。單詞間以一個或者多個空格分開。 第一個單詞前,最後一個單詞後也可能有0到多個空格。 比如:" abc    xyz" 包含兩個單詞,"ab   c   xyz    "  包含3個單詞。

2015藍橋全國軟體大賽省賽(預賽)總結

這是我上大學以來第一次自發的寫總結,這也許意味著我對大學的看法和接下來的大學生活都將有所改變吧。首先說說引導我寫這篇總結的“人物”吧,RUI,從大一開始便是同學,直到大三成為了舍友。他的成績一直很好,如果沒記錯的話,大一專業第一名,大二好像也是第一第二的,總之在班裡一直名列

藍橋大賽個人賽決賽(軟體類)真題 Java語言B組 答案

標題:分機號X老闆脾氣古怪,他們公司的電話分機號都是3位數,老闆規定,所有號碼必須是降序排列,且不能有重複的數位。比如:751,520,321 都滿足要求,而,766,918,201 就不符合要求。現在請你計算一下,按照這樣的規定,一共有多少個可用的3位分機號碼?請直接提交該