牛客oj 習題3.6打印極值點座標&&習題3.7找位置(本題好題)

 

這題樣例一開始有個案例個數可是題目輸入中卻未說明,結果按輸入格式爲主,樣例是錯的,害我白白WA了一次。

 

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <map>
#include <cmath>
#include <climits>

using namespace std;

const int MAXN = 100;
const int INF = INT_MAX;

int num[MAXN];

int main(){
//	freopen("in.txt", "r", stdin);
	int k;
	//scanf("%d", &n);
	while(~scanf("%d", &k)){
		for(int i = 0; i < k; i++){
			scanf("%d", &num[i]);
		}
		int count = 0, ans[MAXN];
		if(num[0] != num[1]) ans[count++] = 0;
		for(int i = 1; i < k-1; i++){
			if(((num[i] > num[i-1]) && (num[i] > num[i+1])) || ((num[i] < num[i-1]) && (num[i] < num[i+1]))){
				ans[count++] = i;
			}
		}
		if(num[k-1] != num[k-2]) ans[count++] = k-1;
		bool flag = false;
		for(int i = 0; i < count; i++){
			if(flag) printf(" ");
			printf("%d", ans[i]);
			flag = true;
		}
		printf("\n");
	}
	return 0;
}

 

 

這題我是利用了數組下標可以是字符的特性,把重複的字母存在一個ans數組中,再遍歷原串求出出現的位置。

這題有個疑問就是字符長度最大是100,我數組開到了105居然不夠,開到130纔夠,而visit和ans肯定不會溢出的情況下,能夠溢出的只有num數組了,至於爲什麼溢出。。我搞不懂。。不過可以肯定的是,如果對自己的代碼有信心的話,多半是溢出了,數組開大點就好。

 

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <map>
#include <cmath>
#include <climits>

using namespace std;

const int MAXN = 130;
const int INF = INT_MAX;

int num[MAXN];
char ans[MAXN];
bool visit[MAXN]; 

int main(){
//	freopen("in.txt", "r", stdin);
	string str;
	while(cin >> str){
		memset(num, 0, sizeof(num));
		memset(visit, false, sizeof(visit));
		int length = str.size();
		int count = 0;
		for(int i = 0; i < length; i++){
			num[str[i]]++;
		}
		for(int i = 0; i < length; i++){
			if((num[str[i]] >= 2) && (visit[str[i]] == false)){
				ans[count++] = str[i];
				visit[str[i]] = true;
			}
		}
		for(int i = 0; i < count; i++){
			bool flag = false;
			for(int j = 0; j < length; j++){
				if(ans[i] == str[j]){
					if(flag) printf(",");
					printf("%c:%d", ans[i], j);
					flag = true;
				}
			}
			printf("\n");
		}
	}
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章