Lấy k phần tử tại vị trí j của mảng sao cho các giá trị lấy được luôn ở xung quanh vị trí j cần tìm

anhtuank7c

Member
5/12/10
167
13
18
Mình có bài toán thế này:
Có 1mảng sau:
Giá trị của mảng: [A,B,C,D,E,F,G,H,I,J]
Vị trí tương ứng: [0,1,2,3,4,5,6,7,8,9]
Mình muốn lấy:
- 3 phần tử tại vị trí 0: kết quả: A,B,C
- 3 phần tử tại vị trí 9: kết quả: J,I,H
- 3 phần tử tại vị trí 4: kết quả: E,D,F,C
- 4 phần tử tại vị trí 1: kết quả: B,A,C,D
- 4 phần tử tại vị trí 8: kết quả: I,H,J,G
- 11 phần tử tại vị trí 0: kết quả: A,B,C,D,E,F,G,H,I,J

cái này mình muốn khái quát hóa nó lên thành công thức để bài toán trở thành:
Lấy k phần tử tại vị trí j của mảng sao cho các giá trị lấy được luôn ở xung quanh vị trí j cần tìm.
Xin mời các bạn cùng tham gia thảo luận.
 

anhtuank7c

Member
5/12/10
167
13
18
Ðề: Lấy k phần tử tại vị trí j của mảng sao cho các giá trị lấy được luôn ở xung quanh vị trí j cần

hehe mình tìm ra rồi.
PHP:
		LinkedList<PredictSeasonChoice> result = new LinkedList<PredictSeasonChoice>();
		int index = position - 1;
		int upRemain = rownum / 2;
		int downRemain = rownum - upRemain;
		while(upRemain > 0 && index >= 0 && index < teams.size())
		{
			PredictTeam team = teams.get(index);
			for(PredictSeasonChoice choice : choices)
			{
				if(choice.getCode().equalsIgnoreCase(team.getCode()))
				{
					result.addFirst(choice);
					upRemain--;
					break;
				}
			}
			index--;
		}
		downRemain += upRemain;

		index = position;
		while(downRemain > 0 && index >= 0 && index < teams.size())
		{
			PredictTeam team = teams.get(index);
			for(PredictSeasonChoice choice : choices)
			{
				if(choice.getCode().equalsIgnoreCase(team.getCode()))
				{
					result.addLast(choice);
					downRemain--;
					break;
				}
			}
			index++;
		}
		return result;