How do I improve my logical thinking and problem solving skills?

Here are some of the steps that one can take to build on to the  skill.

The core activities

Focus and attention: When you face a problem, give it your full focus. Think only about the problem and forget everything else.
Suspect your memory: While memory may be good for various tasks but when it comes to logic, memory is a bad master. Scrutinize your memory and don't trust it completely.
Avoid multitasking: You cannot do two logical thinking activities at once. 
Diagrams are your savior: Always use paper and pencil, draw flowcharts, boxes, circles, to represent logic. Since you have not used your left-brain that much, you will use your right-brain to wake up your left-brain. After you have developed sufficient skills you will be able to do much of this stuff mentally.
Read good books: Find books on logical reasoning, which promises to build the skills  from ground up. Never try to master too much at once, take is slow and steady.
Take online tests: Find some good online tests e.g. Online Logical Reasoning Test

The fun activities

Solve puzzles: Games like Sudoku, crosswords, and other online puzzles help a lot in building up logical skills.
Play chess: If you don't know the game, learn it and try and play a little bit everyday. It will work wonders to your ability.

The base activities

Eat a healthy diet: Eating healthy food is a pre-requisite for smooth and robust functioning of the mind. Avoid junk food, sodas, colas, alcohol, caffeine, nicotine etc. Eating green vegetables, dry fruits like almonds, blueberries etc will boost the brain functions.
Sleep well: Sleep for 7-8 hrs a day at a stretch and sleep on time and wake up on time regularly.
Practice Breathing and Meditation: Breathing exercise and meditation will
enhance your brain function manifold. I would specially recommend 'Ujjayi' pranayama.
Exercise: A healthy body has a healthy mind. There is no denying the fact.

This post is consists of various answers from Quora


You may also like:
C++: Insertion Sort using STL (Sorting)
C++: Doubly Linked List using Template (Data Structure)
C++: Implementation of Stack using Array
C++: Singly Linked List using Template (Data Structure)
C++: Operator Overloading