题目链接
1056.扫雷游戏
这题是我准备的,所以比较清楚一点,简单的遍历搜索。
#include#include #include #include #include using namespace std;struct p{ int x,y;}lei[100005];int n,m;char chess[105][105];int go[10][3] = { {1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};void bfs(int x0,int y0){ p beg,bet; beg.x = x0; beg.y = y0; int i,j; for(i = 0; i < 8; i++) { bet.x = beg.x + go[i][0]; bet.y = beg.y + go[i][1]; if(bet.x > 0 && bet.x <= n && bet.y > 0 && bet.y <= m) { if(chess[bet.x][bet.y] == '*')continue; else { chess[bet.x][bet.y]++; } } }}int main(){ int i,j; while(scanf("%d%d",&n,&m) != EOF) { if(n == 0 || m == 0)break; getchar(); memset(chess,'0',sizeof(chess)); int tot = 1; for(i = 1; i <= n ; i++) { for(j = 1; j <= m; j++) { scanf("%c",&chess[i][j]); if(chess[i][j] == '*') { lei[tot].x = i; lei[tot++].y = j; } else { chess[i][j] = '0'; } } getchar(); } for(i = 1; i < tot; i++) { bfs(lei[i].x,lei[i].y); } for(i = 1; i <= n; i++) { for(j = 1; j <= m; j++) printf("%c",chess[i][j]); printf("\n"); } printf("\n"); } return 0;}
1406.凯撒密码
简单的字符串处理。
#include#include #include #include #include using namespace std;char s[105];int main(){ int i,j; while(gets(s)) { for(i = 0; i < strlen(s) ; i++) { if((s[i] >= 'D' && s[i] <= 'Z') || (s[i] >= 'd' && s[i] <= 'z')) { s[i] -= 3; } else if(s[i] == 'A' || s[i] == 'B' || s[i] == 'C' || s[i] == 'a' || s[i] == 'b' || s[i] == 'c') { s[i] += 23; } else continue; } puts(s); } return 0;}
1664.Top K different numbers
sort快排。
#include#include #include #include using namespace std;int a[10005];int store[10005];int main(){ int i,j; int n,k; while(scanf("%d%d",&n,&k) != EOF) { memset(a,0,sizeof(a)); memset(store,0,sizeof(store)); for(i = 1; i <= n; i++) { scanf("%d",&a[i]); } sort(a+1,a+n+1); int tot = 1; store[1] = a[n]; for(i = n-1 ; i >= 1 ; i--) { if(a[i] != store[tot]) { tot++; store[tot] = a[i]; } if(tot == k)break; } if(tot < k) { printf("-1\n"); continue; } for(i = k; i >= 1; i--) { if(i != 1) printf("%d ",store[i]); else printf("%d\n",store[i]); } } return 0;}