日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蓝桥杯矩阵求和_刷蓝桥杯官网习题,准备蓝桥杯的小伙伴,一起来交流吧(✪ω✪)。(2月27日更新)...

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯矩阵求和_刷蓝桥杯官网习题,准备蓝桥杯的小伙伴,一起来交流吧(✪ω✪)。(2月27日更新)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

考前集中把藍橋杯官網上的算法提高里的習題做一做,希望有備戰的小伙伴與我一起刷題😄,上面的題都不難,比y總的課簡單多了😂。

學算法不到半年時間,假如有小伙伴做的方法比我的更簡單或者我的代碼有bug,歡迎在下方評論,謝謝啦。

ADV-306 輸出三個整數的最大數

#include

#include

#include

#include

using namespace std;

const int N = 3;

int a[3];

int main(){

for (int i = 0; i < N; i++) cin >> a[i];

sort(a, a + N);

cout << a[2] << endl;

return 0;

}

ADV-305 輸出二進制表示

#include

#include

using namespace std;

char s[10];

int n;

int main()

{

cin >> n;

itoa(n, s, 2);

int end = 0;

while (s[end] != '\0')

end++;

end--;

if (n >= 0) cout << 0;

else cout << 1;

int mask = 1, num = 0;

for (int i = end; i >= 0 && i >= end - 6; i--)

{

num += (s[i] - '0') * mask;

mask *= 10;

}

printf("%07d", num);

return 0;

}

ADV-304 矩陣轉置

#include

#include

#include

#include

using namespace std;

const int N = 25;

int n, m;

int a[N][N];

int main()

{

cin >> n >> m;

for (int i = 0; i < n; i++)

for (int j = 0; j < m; j++)

scanf("%d", &a[i][j]);

for (int i = 0; i < m; i++)

{

for (int j = 0; j < n; j++)

printf("%d ", a[j][i]);

puts("");

}

return 0;

}

ADV-303 數組求和

數據范圍較小,暴力$O(n^2)$就可以了。

#include

#include

#include

#include

using namespace std;

const int N = 1010;

int n, m;

int a[N * 2];

int main()

{

scanf("%d%d", &n, &m);

for (int i = 1; i <= n; i++)

{

scanf("%d", &a[i]);

a[i + n] = a[i];

}

int ans = 0;

for (int i = 1; i <= n; i++)

{

int sum = 0;

for (int j = i; j <= i + m - 1; j++) sum += a[j];

ans = max(ans, sum);

}

printf("%d\n", ans);

return 0;

}

ADV-302 秘密行動

#include

#include

#include

#include

using namespace std;

const int N = 10010;

int n;

int a[N];

int f[N][2]; // 第二維為0的話表示到達某一層是跳上來的,為1表示爬上來的。

// 一開始做時根本沒想第二維,但是怎么做也做不對,所以又想了一下,其實上樓的過程是有限制的,

// 比如這一層是跳上來的話,上一層一定是爬上來的,這一層是爬上來的,那么上一層既可以是跳上來的,也可以是爬上來的。

int main()

{

cin >> n;

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

f[1][0] = 0;

f[1][1] = a[1];

for (int i = 2; i <= n; i++)

{

f[i][0] = min(f[i - 1][1], f[i - 2][1]);

f[i][1] = min(f[i - 1][0], f[i - 1][1]) + a[i]; // 這個不應該是a[i]-a[i-1]嗎?但是因為樣例沒過,所以改了一下,居然才對了。。。

}

cout << min(f[n][0], f[n][1]) << endl;

return 0;

}

ADV-301 字符串壓縮

#include

#include

#include

#include

#include

#include

using namespace std;

int main()

{

map m;

string s, s1;

getline(cin, s);

for (string::iterator it = s.begin(); it != s.end(); it++)

{

m[*it]++;

if (*it == ' ') s1.push_back(*it);

if (m[*it] == 1 || m[*it] == 3 || m[*it] == 6) s1.push_back(*it);

}

cout << s1 << endl;

return 0;

}

ADV-300 字符串生成器

不會啊。。

ADV-299 宰羊

題解鏈接,之前我在問答區問過,這是胡圖圖大佬寫的。

ADV-298 和諧宿舍2

#include

#include

#include

#include

using namespace std;

const int N = 110;

int n, m;

int h[N];

int f[N][N]; // f[i][k]代表 用k塊木板 從把前i個作品蓋住的集合的最小值

int maxh[N][N];

int main()

{

scanf("%d%d", &n, &m);

int sum = 0;

for (int i = 1; i <= n; i++) scanf("%d", &h[i]);

for (int i = 1; i <= n; i++)

for (int j = i; j <= n; j++)

{

int s = 0;

for (int k = i; k <= j; k++) s = max(s, h[k]);

maxh[i][j] = s;

}

for (int i = 1; i <= n; i++)

for (int k = 1; k <= m && k <= i; k++)

{

if (k == 1) f[i][k] = i * maxh[1][i];

else if (k == i)

{

int sum = 0;

for (int u = 1; u <= i; u++) sum += h[u];

f[i][k] = sum;

}

else

{

f[i][k] = 0x3f3f3f3f;

// u代表最后一塊木板的起始位置

for (int u = i; u >= k; u--)

{

f[i][k] = min(f[i][k], f[u - 1][k - 1] + maxh[u][i] * (i - u + 1));

}

}

}

int ans = 0x3f3f3f3f;

for (int i = 1; i <= m; i++)

ans = min(ans, f[n][i]);

printf("%d", ans);

return 0;

}

ADV-297 快速排序

#include

#include

#include

#include

using namespace std;

const int N = 15;

int a[N];

void quick_sort(int l, int r)

{

if (l == r) return;

int x = a[l + r >> 1];

int i = l - 1, j = r + 1;

while (i < j)

{

while (a[++i] < x) ;

while (a[--j] > x) ;

if (i < j)

swap(a[i], a[j]);

}

quick_sort(l, j);

quick_sort(j + 1, r);

}

int main()

{

int x, cnt = 0;

while (cin >> x, x)

a[cnt++] = x;

quick_sort(0, cnt - 1);

for (int i = 0; i < cnt; i++) cout << a[i] << " ";

return 0;

}

總結

以上是生活随笔為你收集整理的蓝桥杯矩阵求和_刷蓝桥杯官网习题,准备蓝桥杯的小伙伴,一起来交流吧(✪ω✪)。(2月27日更新)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。