▶ 爱要坦荡荡 (163.com)
每一道题都有思路,可是只有一道Accepted100%,一道很简单的50%,一道输出错误10%并报错Segmentation Fault,一道字符串有思路但是没时间了
一,蛇皮矩阵 Accepted 10%
报错Segmentation Fault
可能是每行后,多输出了空格
#include<iostream>
using namespace std;
int a[110][110];
int main()
{
a[0][0] = 1;
int n;
cin>>n;
int row = 0, col = 0, m = 1;
//到达最后一行前
while(1) {
//向右
a[row][++col] = ++m;
//左下
while(col)
a[++row][--col] = ++m;
//向下
a[++row][col] = ++m;
//右上
while(row)
a[--row][++col] = ++m;
if(row == n - 1)
break;
}
//到达最后一行后,开始右下部分输出
while(!a[n - 1][n - 1]) {
//向右
a[row][++col] = ++m;
//右上
if(col != n - 1)
a[--row][++col] = ++m;
//向下
a[++row][col] = ++m;
//左下
if(row != n - 1)
a[++row][--col] = ++m;
}
for(int i = 0; i < n; ++i) {
for(int j = 0; j < n; ++j)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
二,货车司机 Accepted 50%
这题真的非常简单,1分钟找思路,2分钟敲出来,后悔没有回去仔细想想
每辆货车装K件货物,共有N件货物,问需要多少量车,但司机有个怪癖,不喜欢13这个数字,就是每辆货车装的货物不能是13
第10行犯了个低级错误,把N / 12 改成 N / 13就好了
#include<iostream>
using namespace std;
int main()
{
int N, K, ans = 0;
while(cin>>N>>K) {
if(N == 13)
ans = max(N / K + 1, 2);
if(K == 13)
ans = N / 12 + 1;
if(N != 13 && K != 13)
ans = N / K + 1;
cout<<ans<<endl;
}
return 0;
}
三,求1 ~ n出现多少次x Accepted 100%
#include<iostream>
using namespace std;
int main()
{
int n, x;
cin>>n>>x;
int ans = 0;
for(int i = 1; i <= n; ++i) {
int k = i;
if(k == x)
ans++;
while(k / 10 != 0) {
if(k % 10 == x)
ans++;
k /= 10;
if(k == x)
ans++;
}
}
cout<<ans<<endl;
return 0;
}
11 1
4
四,字符串 Accepted 0%
输入k和一串字符串
1,字符串包括已知部分和未知部分,未知部分用?代替
2,k表示字符串只能有前k个小写字母
3,且每个字母最少出现一次
4,必须为回文串
4,回文串写个bool回文函数就好
2,前k用a[i] - 'a' + 1 >= 1 && a[i] - 'a' + 1 <= k
3,只能出现一次用b[i]标记出现过的字母
1,这个的判断还没想清楚。。
总结
慢慢学会一题多解,一道题以前会了,可换种思路或者加点细节要求呢,还有就是细心
好歹,一次有一次的进步,等再熟练点,就不止在CSDN的比赛练手了
先学完《啊哈算法》发育到4级
再在CSDN参加周赛(每次起码75分以上)发育到装备出完
期间打打野(对着算法标签去各种网站刷简单题)
最后带线摧毁敌方防御塔(蓝桥杯省二)