洛谷P1106删数问题

此题看起来非常简单,原本以为可以很快AC。。。然而在细节处理上出了问题

debug半小时..

#include<bits/stdc++.h>
using namespace std;
char s[255];
int a[255];
int k;
int main() {
	scanf("%s",s+1);
	int l=strlen(s+1);
//	printf("%d",l);
	scanf("%d",&k);
	for(int i=1; i<=l; i++)
		a[i]=s[i]-'0';
	for(int j=1; j<=k; j++) {
		for(int i=1; i<=l-1; i++) {

			if(a[i]>a[i+1]) {

				for(int p=i; p<=l-1; p++) {
					a[p]=a[p+1];
				}
				//	a[l]=-1;

				break;
			}
		}
		l--;//这个位置的l--卡了好久,原来写在if里面有一次没法执行
	bool flag=0;

	for(int i=1; i<=l; i++) {
		if(a[i]!=0) flag=1;
		if(flag==1)
			printf("%d",a[i]);
	}
	if(!flag) {
		printf("0");
		return 0;
	}
	return 0;
}

 

 

 

原文地址:https://www.cnblogs.com/conprour/p/14291835.html