2018程設模考2

2021-09-05 01:31:59 字數 1837 閱讀 4732

a

分別記錄紙幣剩餘數量判斷是否能找零,因為資料比較弱所以對於5+5+5的情況沒考慮也過了。

#includeusing namespace std;

int main()

else

}else

else}}

if(flag) printf("true");

return 0;

}

b

因為一次只能搬一塊或者兩塊磚頭,所以對於n塊磚頭的情況,只需要知道n-1和n-2塊磚頭有多少種方法,累加即可。dp[i]表示搬i塊磚頭有多少種方法,遞推後輸出dp[n]

#includeusing namespace std;

int maxn=1e5+5;

int main()

printf("%d",dp[n]);

}return 0;

}

c

按照題意模擬即可,我給定了迴圈次數最多num=100。

#includeusing namespace std;

int maxn=1e5+5;

int main()

n=temp;

if(temp==1)

}if(flag)

printf("yes");

else

printf("no");

return 0;

}

d

dfs寫完發現資料很大,果斷超時了,先給出超時**,後面再改。

#includeusing namespace std;

typedef long long ll;

int maxn=1e6+5;

const int mod=1e9+7;

int n,a[105],num=1;

ll dfs(int x,int y,int p)

int main()

ll temp=0;

for(int i=1;i<=a[1];i++)

printf("%lld",temp);

}

e

#includeusing namespace std;

int maxn=1e5+5;

const int mod=1e9+7;

int main()

// printf("%d\n",num);

memset(dp,0,sizeof(dp));

for(int i=1;i<=num-1;i++)

}printf("%d",dp[n]);

return 0;

}

f

這題用到了動態規劃的思想,dp[i][j]表示i個篩子擲出j點有多少種可能,那麼我們考慮dp[i][j]是如何得到的。我們在擲出第i個篩子的時候會有六種情況,分別對應1~6點,那麼得出轉移方程

這裡得出了每種點數的可能方案數,但是我們求的是概率所以還要求出總的可能數,這個很簡單就是6^n。

那麼輸出即可。

#includeusing namespace std;

typedef long long ll;

int maxn=1e4+5;

const int mod=1e9+7;

int quick_pow(int a,int b)

return ans;

}int main()

}int temp=quick_pow(6,n);

for(int i=n;i<=6*n;i++)

}

c c 演算法刷題筆記 自測模考 2018

前言 今天做了2018年的上機真題,雖簡單,但除第一題以外其他三題並不無腦。第二道被卡住超過半小時,主要原因 對 string 的操作還不夠熟悉,簡單認知,但不能熟練靈活利用。問題描述 近來,跳一跳這款小遊戲風靡全國,受到不少玩家的喜愛。簡化後的跳一跳規則如下 玩家每次從當前方塊跳到下乙個方塊,如果...

程設十三周

問題描述 這一天,tt 遇到了乙個神秘人。神秘人給了兩個數字,分別表示 n 和 k,並要求 tt 給出 k 個奇偶性相同的正整數,使得其和等於 n。例如 n 10,k 3,答案可以為 4 2 4 tt 覺得這個任務太簡單了,不願意做,你能幫他完成嗎?本題是spj input 第一行乙個整數 t,表示...

程設 神奇的MyAny

總時間限制 1000ms 記憶體限制 65536kb 描述編寫 myany類以及,myany cast模版 可能多個 使得程式按要求輸出 要求myany類必須要有析構函式,在析構函式以及其他適當的地方 比如複製建構函式,過載的賦值號 要釋放動態分配的空間,不能造成記憶體碎片。include incl...